使用Lambda(node.js)的DynamoDB查询:不支持查询键条件

时间:2016-02-10 14:42:28

标签: amazon-dynamodb aws-lambda

我尝试从Lambda函数查询我的dynamoDB。我的表使用“id”作为哈希键。我在下面尝试了两个版本并收到了相应的错误消息。我做错了什么?

  var params = {
        TableName : "addresses",
        KeyConditionExpression: "id = :id AND city = :city",
        ExpressionAttributeValues: {
            ":id": "Austria",
            ":city": "Salzburg"
        }
    };

无法查询。错误:{   “message”:“不支持查询密钥条件”,...}

var params = {
    TableName : "addresses",
    KeyConditionExpression: "city = :city",
    ExpressionAttributeValues: {
        ":city": "Salzburg"
    }
};

无法查询。错误:{   “message”:“查询条件错过了关键架构元素:id”,...}

编辑:

我现在添加了二级索引,但仍然会遇到相同的错误:

enter image description here

1 个答案:

答案 0 :(得分:10)

如果您的哈希键是'id',那么您无法通过以下方式查询:

KeyConditionExpression: "id = :id AND city = :city"

或通过:

KeyConditionExpression: "city = :city"

您只能通过哈希和范围键查询dynamodb。

所以你的查询应该包含always hash key(id)。如果你想通过'city'查询,你应该将'city'作为范围键添加到dynamodb表(或本地二级索引)

然后您可以使用'id''city'查询记录。

<强>更新

如果您想查询'city'

KeyConditionExpression: "city = :city"

然后你可以在表格中添加全局二级索引。