2015-10-26 12 views
8

Ich versuche, eine kleine API von AWS Lambda zu DynamoDB einzurichten und ich habe Probleme herauszufinden, ob und wie ich ein Array von Objekten in einen Schlüssel schreiben kann.DynamoDB putitem in NodeJs - Arrays von Objekten

Ich habe ein Objekt wie

{ 
    "teamName": "Team Awesome", 
    "members": [ 
     { 
      "email": "[email protected]", 
      "name": "Bob" 
     }, 
     { 
      "email": "[email protected]", 
      "name": "Alice" 
     } 
    ] 
} 

Die Mitglieder Array mir Fragen berät, in den docs es sieht aus wie kann es die Listentypen erfolgen unter Berücksichtigung, aber es gibt nur kein Beispiel dafür, wie, wie es geht und mir laufen die Wege aus, es zu versuchen.

Also ist es möglich, etwas in diesem Format überhaupt zu schreiben und wie machen Sie das in diesem Fall?

Beispielcode - was stelle ich ???

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

exports.handler = function(event, context) { 
    var tableName = "GDCCompetition"; 
    var datetime = new Date().getTime().toString(); 

    DynamoDB.putItem({ 
     "TableName": tableName, 
     "Item": { 
      "datetime": { 
       "N": datetime 
      }, 
      "teamName": { 
       "S": event.teamName 
      }, 
      "members": ??? 
     } 
    }); 
} 

Antwort

14

Die Dokumentation ist nicht wirklich klar, aber es ist ein Ding namens DocClient, können Sie ein übliches JS Objekt, um es passieren, und es wird in AWS Objekt all Parsing und die Transformation tun (mit allen Typen). Sie können es wie folgt verwenden:

var AWS = require("aws-sdk"); 
var DynamoDB = new AWS.DynamoDB.DocumentClient(); 

var params = { 
    TableName: "MyTable", 
    Item: { 
     "teamName": "Team Awesome", 
     "members": [ 
      { 
       "email": "[email protected]", 
       "name": "Bob" 
      }, 
      { 
       "email": "[email protected]", 
       "name": "Alice" 
      } 
     ] 
    } 
}; 

DynamoDB.put(params, function (err) { 
    if (err) { 
     return throw err; 
    } 

    //this is put 
}); 
+0

Danke für die schnelle Antwort, aber ich verstehe nicht, wie ich das dynamisch erstellen. Ich habe die Frage mit meinem aktuellen Testcode aktualisiert. –

+0

@ErikHonn Mit DocumentClient müssen Sie das Objekt nicht dynamisch erstellen! Sie übergeben Ihr reguläres Objekt einfach in die Eigenschaft "Item" und sdk führt die Transformation für Sie durch. –

+0

Klingt gut, aber alles, was ich bekomme, ist "Prozess beendet, bevor Anfrage abgeschlossen" aus irgendeinem Grund. –

Verwandte Themen