AWS.DynamoDB.DocumentClient对象的getBatchItem方法是否支持全局二级索引?

时间:2017-11-27 04:24:17

标签: node.js amazon-web-services aws-lambda aws-sdk

我在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不能使用全局二级索引,我必须逐一阅读表格?

1 个答案:

答案 0 :(得分:0)

我不这么认为。您可能必须一对一查询。

INDEXES-响应包括该操作的汇总ConsumedCapacity,以及每个已访问表和二级索引的ConsumedCapacity。 请注意,某些操作(例如GetItem和BatchGetItem)根本不会访问任何索引。在这种情况下,指定INDEXES只会返回表的ConsumedCapacity信息。

来源:https://docs.aws.amazon.com/cli/latest/reference/dynamodb/batch-get-item.html