使用 Lambda (node.js) 的 DynamoDB 查询:不支持查询关键条件
DynamoDB query with Lambda (node.js): Query key condition not supported
我尝试从 Lambda 函数查询我的 dynamoDB。我的 table 使用 "id" 作为散列键。我尝试了下面的两个版本并收到了相应的错误消息。我做错了什么?
var params = {
TableName : "addresses",
KeyConditionExpression: "id = :id AND city = :city",
ExpressionAttributeValues: {
":id": "Austria",
":city": "Salzburg"
}
};
无法查询。错误: {
"message": "Query key condition not supported",...}
var params = {
TableName : "addresses",
KeyConditionExpression: "city = :city",
ExpressionAttributeValues: {
":city": "Salzburg"
}
};
无法查询。错误: {
"message": "Query condition missed key schema element: id",...}
编辑:
我现在添加了二级索引,但仍然出现相同的错误:
如果您的哈希键是 'id' 那么您不能通过以下方式查询:
KeyConditionExpression: "id = :id AND city = :city"
或通过:
KeyConditionExpression: "city = :city"
您只能通过哈希和范围键查询 dynamodb。
因此您的查询应始终包含散列键 (id)。如果你也想通过 'city' 查询,你应该将 'city' 作为范围键添加到 dynamodb table (或本地二级索引)
然后你可以用'id'
和'city'
查询记录。
更新:
如果你想查询'city'
KeyConditionExpression: "city = :city"
然后您可以将全局二级索引添加到 table。
我尝试从 Lambda 函数查询我的 dynamoDB。我的 table 使用 "id" 作为散列键。我尝试了下面的两个版本并收到了相应的错误消息。我做错了什么?
var params = {
TableName : "addresses",
KeyConditionExpression: "id = :id AND city = :city",
ExpressionAttributeValues: {
":id": "Austria",
":city": "Salzburg"
}
};
无法查询。错误: { "message": "Query key condition not supported",...}
var params = {
TableName : "addresses",
KeyConditionExpression: "city = :city",
ExpressionAttributeValues: {
":city": "Salzburg"
}
};
无法查询。错误: { "message": "Query condition missed key schema element: id",...}
编辑:
我现在添加了二级索引,但仍然出现相同的错误:
如果您的哈希键是 'id' 那么您不能通过以下方式查询:
KeyConditionExpression: "id = :id AND city = :city"
或通过:
KeyConditionExpression: "city = :city"
您只能通过哈希和范围键查询 dynamodb。
因此您的查询应始终包含散列键 (id)。如果你也想通过 'city' 查询,你应该将 'city' 作为范围键添加到 dynamodb table (或本地二级索引)
然后你可以用'id'
和'city'
查询记录。
更新:
如果你想查询'city'
KeyConditionExpression: "city = :city"
然后您可以将全局二级索引添加到 table。