我在nodejs程序中使用AWS.DynamoDB.DocumentClient来从多个Dynamodb表中获取项目。为了简化代码,我选择使用BatchGetItem / BatchGet方法。
挑战是我需要根据全球二级索引来获取项目,例如name + age,而不是创建表时生成的初始主键。我浏览了BatchGetItem/BatchGet但没有看到使用全球二级索引的任何参数。
我使用以下代码进行了一些测试
var params = { RequestItems: { 'Table-1': { Keys: [ { name: 'abc', age: 18, }, ] } } }; var docClient = new AWS.DynamoDB.DocumentClient(); docClient.batchGet(params, function(err, data) { if (err) console.log(err); else console.log(data); });
得到以下错误。
> ValidationException: The provided key element does not match the
> schema
这是否意味着BatchGetItem / BatchGet不能使用全局二级索引,我必须逐一阅读表格?
答案 0 :(得分:0)
我不这么认为。您可能必须一对一查询。
INDEXES-响应包括该操作的汇总ConsumedCapacity,以及每个已访问表和二级索引的ConsumedCapacity。 请注意,某些操作(例如GetItem和BatchGetItem)根本不会访问任何索引。在这种情况下,指定INDEXES只会返回表的ConsumedCapacity信息。
来源:https://docs.aws.amazon.com/cli/latest/reference/dynamodb/batch-get-item.html