DynamoDB SDK имеет два типа клиента:
- клиент низкого уровня:
new AWS.DynamoDB(...)
- клиент высокого уровня:
new AWS.DynamoDB.DocumentClient(...)
В настоящее время вы используете # 1, но вы предоставляете атрибуты для своего запроса, как если бы вы использовали клиент документа # 2.
Итак, либо переключитесь на DocumentClient и продолжайте использовать:
{":a": "Will666"}
Или придерживайтесь низкоуровневого клиента и измените свои атрибуты, указав типы значений, например:
{":a": {"S": "Will666"}}
Я бы порекомендовал DocumentClient , поскольку он значительно упрощает маршалинг и демаршаллинг данных.
Я бы также порекомендовал обновить ваш код со старого асинхронного кода в стиле обратного вызова до новых опций на основе Promise. Например, что-то вроде этого:
exports.handler = async (event, context) => {
const params = {
TableName: "signalepisodes",
KeyConditionExpression: "userID = :a",
ExpressionAttributeValues: { ":a": "Will666" }
};
const items = await dynamodb.query(params).promise();
for (const item of items) {
console.log('Item:', item);
}
return items;
}