我尝试从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”,...}
编辑:
我现在添加了二级索引,但仍然会遇到相同的错误:
答案 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"
然后你可以在表格中添加全局二级索引。