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

Javascript 如何使用';db.query';对于用于DynamoDB的NodeJS AWS-SDK,javascript,node.js,amazon-dynamodb,Javascript,Node.js,Amazon Dynamodb,各位, 我有下表: hashKey (model): RangeKey (make): mustang ford f150 ford malibu chevy ... 我想做的是搜索并返回所有福特车型,即: var params = { TableName : 'models', IndexName : 'make-index', KeyCondit

各位, 我有下表:

  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)
        }
    });

我做错了什么?:)谢谢

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

在DynamoDB中使用
Query
操作的唯一方法是在散列键上使用
EQ
运算符。可以是表上的散列键,也可以是全局二级索引上的散列键,但如果将
make
设置为散列键,则无法(没有全局二级索引)构造一个查询,该查询会显示“给我范围键为
ford
”的所有项,然后您可以执行您描述的查询


不幸的是,只有在创建表时才能创建索引。如果在
make
项上没有全局二级索引,则可以通过
Scan
操作来完成,但它的性能不如
查询

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


您可以通过在谷歌中键入“amazon aws”来找到amazon aws控制台。

我试图避免我知道如何构建此表的方式。。。ie
entry
make
model
如果我将hashkey设置为已知字符串,那么我当然可以查询。但这似乎是一种使用dynamo的非aws方式