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
Это возвращает '[{price: {N: '12'}}, {price: {N: '10'}}]' (Который является ценой двух предметов, соответствующих критериям, Не все позиции с их именами и т. д. Почему он делает это, даже если он получает все данные data.Items? – drm18272
С DynamoDB вы должны сказать ему, какие атрибуты вы хотите вернуть. Если вы хотите, чтобы все атрибуты вам нужно добавить 'Select: «ALL_ATTRIBUTES» 'вашему объекту' params'. Все это четко изложено в документации. Я действительно предлагаю вам ознакомиться с документацией. По крайней мере, вы должны пойти здесь http://docs.aws.amazon.com/AWSJavaScriptSDK /latest/AWS/DynamoDB.html#query-property и посмотреть все параметры, которые выполняет функция 'query', и что делает каждый параметр. –