Querying dynamo table with @aws-sdk/lib-dynamodb
I’m trying to query a DynamoDB table in AWS, from a lambda written in Node.js.
// db.js
const { DynamoDBClient } = require('@aws-sdk/client-dynamodb');
const { QueryCommand } = require('@aws-sdk/lib-dynamodb');
const ddbClient = new DynamoDBClient({ region: 'us-east-1' });
try {
const params = {
TableName: process.env.TABLE_NAME,
ExpressionAttributeValues: { ':userEmail': `${userEmail}` },
ExpressionAttributeNames: { '#userEmail': 'user_email' },
// KeyConditionExpression: 'user_email = :userEmail', <--- also tried like this
KeyConditionExpression: '#userEmail = :userEmail',
};
console.warn(params);
return await ddbClient.send(new QueryCommand(params));
} catch (error) {
console.error(`With ${userEmail}`, error);
throw error;
}
The logs:
{
TableName: ‘contacts’,
ExpressionAttributeValues: { ‘:userEmail’: ‘justatest@email.com‘ },
ExpressionAttributeNames: { ‘#userEmail’: ‘user_email’ },
KeyConditionExpression: ‘#userEmail = :userEmail’
}With justatest@email.com
ValidationException: Invalid KeyConditionExpression: Syntax error;
token: “<EOF>”, near: “= “
I don’t know where to look anymore, this query is too simply, so my mistake must be too.
Read more here: Source link