2016-10-16 6 views
1

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 

Antwort

2

Sie versuchen data.Item die undefined ist zu verweisen. Scanvorgänge geben eine Liste und kein einzelnes Objekt zurück. Diese Liste wird über data.Items

verwiesen. Lesen Sie im Zweifelsfall the documentation. Oder Sie können einfach die gesamte data Antwort ausdrucken, um das genaue Format der zurückkommenden Antwort zu sehen.

+0

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

+0

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. –

Verwandte Themen