Я не могу запросить свою таблицу dynamodb из aws lambda из-за неправильного выражения фильтра?

#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 () Я получаю все элементы в моей таблице.