2016-10-16 3 views
1

Im пытается сканировать таблицу dynamodb для всех записей с ценами от 1 до 13,AWS Lambda сканирование таблицы dynamoDB

var AWS = require('aws-sdk'); 
var db = new AWS.DynamoDB(); 


exports.handler = function(event, context) { 

    var params = { 
    TableName: "hexagon2", 
    ProjectionExpression: "price", 
    FilterExpression: "price between :lower and :higher", 
    ExpressionAttributeValues: { 
    ":lower": {"N": "1"}, 
    ":higher": {"N": "13"} 
    } 
}; 

    db.scan(params, function(err, data) { 
    if (err) { 
     console.log(err); // an error occurred 
     } 
    else { 
     console.log(data.Item); // successful response 
     context.done(null,{"Result": "Operation succeeded."}); 
     } 
    }); 
}; 

Но я всегда получаю следующее сообщение об ошибке, когда я проверить его. У меня определенно есть «цена» в качестве атрибута number в моей таблице, и IAM также настроен.

START RequestId: f770c78b-93a1-11e6-b5f6-e5c31cef8b2d Version: $LATEST 
2016-10-16T13:10:54.299Z f770c78b-93a1-11e6-b5f6-e5c31cef8b2d undefined 
END RequestId: f770c78b-93a1-11e6-b5f6-e5c31cef8b2d 
REPORT RequestId: f770c78b-93a1-11e6-b5f6-e5c31cef8b2d Duration: 912.58 ms Billed Duration: 1000 ms Memory Size: 128 MB Max Memory Used: 24 MB 

ответ

2

Вы пытаетесь ссылаться data.Item, который undefined. Операции сканирования возвращают список, а не один элемент. Этот список будет называться через data.Items

При возникновении сомнений прочитайте the documentation. Или вы можете просто распечатать весь ответ data, чтобы увидеть точный формат ответа.

+0

Это возвращает '[{price: {N: '12'}}, {price: {N: '10'}}]' (Который является ценой двух предметов, соответствующих критериям, Не все позиции с их именами и т. д. Почему он делает это, даже если он получает все данные data.Items? – drm18272

+0

С DynamoDB вы должны сказать ему, какие атрибуты вы хотите вернуть. Если вы хотите, чтобы все атрибуты вам нужно добавить 'Select: «ALL_ATTRIBUTES» 'вашему объекту' params'. Все это четко изложено в документации. Я действительно предлагаю вам ознакомиться с документацией. По крайней мере, вы должны пойти здесь http://docs.aws.amazon.com/AWSJavaScriptSDK /latest/AWS/DynamoDB.html#query-property и посмотреть все параметры, которые выполняет функция 'query', и что делает каждый параметр. –