如何使用' db.query'用于DynamoDB的NodeJS AWS-SDK

时间:2014-04-05 06:49:46

标签: javascript node.js amazon-dynamodb

民间,   我有下表:

  hashKey (model):   RangeKey (make):
  mustang            ford
  f150               ford
  malibu             chevy
  ...

我想做的是搜索并返回所有福特车型,即:

var params = {
        TableName : 'models',
        IndexName : 'make-index',
        KeyConditions : 
        {
            "make" : 
            {
                "AttributeValueList" : [
                {
                    "S" : 'ford'
                }
                ],
                "ComparisonOperator" : "EQ"
            }
        },
    }
    db.query(params, function(err, data) {
        if (err) {
            console.log (err)
            callback(err, null)
        } else {
            callback(null, data.Items)
        }
    });

我做错了什么? :)谢谢!

2 个答案:

答案 0 :(得分:2)

您是否设置了以make作为索引哈希键的全局二级索引?您的查询告诉DynamoDB使用名为make-index的索引,但从您的问题中不清楚该索引是否存在。

在DynamoDB中使用Query操作的唯一方法是在哈希键上使用EQ运算符。这可能是关于表上的哈希键,或者是全局二级索引上的哈希键,但是没有办法(没有全局二级索引)构造一个查询"给我所有的范围键为ford的项目。"如果您将全局二级索引设置为使用make作为哈希键,则可以执行您所描述的查询。

不幸的是,只能在创建表时创建索引。如果您在make项目上没有全局二级索引,那么您可以通过Scan操作完成此操作,但它不会像{{1}一样高效}}。

答案 1 :(得分:-1)

您可以在创建表后创建全局二级索引。转到amazon aws dynamodb控制台,单击表格并单击“创建索引”。

您可以通过在Google中输入“amazon aws”找到amazon aws控制台。