#amazon-web-services #aws-lambda #dynamodb-queries
#amazon-web-services #aws-lambda #dynamodb-запросы
Вопрос:
Кажется, я не могу запросить свою dynamodb через lambda. Отображается сообщение об ошибке: ОШИБКА, при которой не удается отсканировать таблицу. Ошибка JSON: { «сообщение»: «Недопустимое выражение фильтра: значение атрибута выражения, используемое в выражении, не определено; значение атрибута: : colorsavailable», мой код выглядит следующим образом:
async function dispatch(intentRequest, callback) {
const aws = require('aws-sdk');
aws.config.update({region: 'xxx'});
var ddb = new aws.DynamoDB();
var ddbDocClient = new aws.DynamoDB.DocumentClient()
async function getCost(colour,size) {
var params ={
TableName : "XXX",
ProjectionExpression:"Cost",
FilterExpression: "coloursavailable = :coloursavailable and sizesavailable = :sizesavailable",
ExpressionAttributeValues:{ ":coloursavailable" : colour, ":sizesavailable": size}
}
return new Promise(resolve =>{
ddbDocClient.scan(params, onScan)
function onScan(err, data) {
if (err) {
console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2));
} else {
data.Items.forEach(function(item) {
resolve(item.Cost);
});
}
}
})
}
Заранее спасибо!
Ответ №1:
Вы не можете использовать метод запроса к таблице без указания конкретного хэш-ключа. Вместо этого следует использовать метод сканирования. Итак, если вы замените:
x = tab.запрос () с
x = tab.scan () Я получаю все элементы в моей таблице.