如何在NodeJS AWS-SDK for DynamoDB中使用'db.query'?

3
各位,我有以下表格:
  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)
        }
    });

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

我正在尝试避免我知道如何构建这个表格的方式...即entry make model如果我将哈希键设置为已知字符串,则可以轻松查询。但这似乎不是使用Dynamo的AWS方式。 - Cmag
2个回答

2
您是否已经使用 make 作为索引的哈希键设置了全局二级索引?您的查询告诉 DynamoDB 使用名为 make-index 的索引,但从您的问题中无法确定该索引是否存在。

在DynamoDB中,仅有一种使用 Query 操作的方法,即对哈希键使用 EQ 运算符。这可以是表上的哈希键,也可以是全局二级索引上的哈希键,但如果没有全局二级索引,则无法构建查询,比如 "给我所有范围键为 ford 的项目"。如果您设置了以 make 为哈希键的全局二级索引,则可以执行所描述的查询。

不幸的是,索引只能在创建表时创建。如果您没有在 make 上设置全局二级索引,则可以通过 Scan 操作完成它,但其性能不如 Query


-1

在创建表之后,您可以创建全局二级索引。前往Amazon AWS DynamoDB控制台,单击表格并单击“创建索引”。

您可以通过在Google中键入“Amazon AWS”来找到Amazon AWS控制台。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接