Im Versuch, eine DynamoDB Tabelle mit Preisen zwischen 1 und 13 für alle Einträge zu scannen,AWS Lambda Scannen eine DynamoDB Tabelle
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."});
}
});
};
Aber ich immer folgenden Fehlermeldung erhalten, wenn ich es testen. Ich habe definitiv "Preis" als Nummer Attribut in meiner Tabelle und IAM ist auch eingerichtet.
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
Das gibt '[{price: {N: '12'}}, {price: {N: '10'}}]' (Welches sind die Preise der zwei Elemente, die die Kriterien erfüllen, nicht die ganzen Elemente mit ihren Namen usw. Warum macht es das, obwohl es das ganze 'data.Items' bekommt? – drm18272
Mit DynamoDB müssen Sie ihm sagen, welche Attribute Sie zurück haben wollen.Wenn Sie alle Attribute zurück wollen, müssen Sie' Select: hinzufügen "ALL_ATTRIBUTES" 'zu deinem' params'-Objekt .Dies ist alles klar in der Dokumentation beschrieben. Ich empfehle wirklich, dass du die Dokumentation lest. Zumindest solltest du http://docs.aws.amazon.com/AWSJavaScriptSDK hierhin gehen /latest/AWS/DynamoDB.html#query-property und schauen Sie sich alle Parameter an, die die 'query' Funktion benötigt und was jeder Parameter macht. –