I try to query my dynamoDB from a Lambda function. My table uses "id" as the hash key. I tried both versions below and received the corresponding error messages. What am I doing wrong?
var params = {
TableName : "addresses",
KeyConditionExpression: "id = :id AND city = :city",
ExpressionAttributeValues: {
":id": "Austria",
":city": "Salzburg"
}
};
Unable to query. Error: { "message": "Query key condition not supported",...}
var params = {
TableName : "addresses",
KeyConditionExpression: "city = :city",
ExpressionAttributeValues: {
":city": "Salzburg"
}
};
Unable to query. Error: { "message": "Query condition missed key schema element: id",...}
EDIT:
I now added secondary indices, but still get the same errors:
if your hash key is 'id' then you cant query by:
KeyConditionExpression: "id = :id AND city = :city"
or by:
KeyConditionExpression: "city = :city"
you can query dynamodb only by hash and range key.
so your query should contain always hash key (id). if you want to query by 'city' also, you should add 'city' as range key to dynamodb table (or local secondary index)
then you can query for a record with 'id'
and 'city'
.
update:
if you want to query for 'city'
KeyConditionExpression: "city = :city"
then you can just add global secondary index to the table.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With