2017-09-25 1 views
0

Ich habe eine Liste von Objekten: [[id, name, Breite, Länge], [ID, Name, Breite, Länge]] etc ..AWS DynamoDB legte eine Liste von Gegenständen (JavaScript)

Ich möchte die Liste auf eine Dynamob Tabelle namens Stationen schieben. Diese ist das, was ich tat:

var AWS = require("aws-sdk"); 
var DynamoDB = new AWS.DynamoDB.DocumentClient(); 
exports.handler = function(event, context) { 
function Station(id, name, latitude, longitude){ 
    this.id = id; 
    this.name = name; 
    this.latitude = latitude; 
    this.longitude = longitude; 
} 
var stations = new Array(); 
for(var i = 0; i < event.length;i++){ 
    stations[i] = new Station(event[i][0],event[i][1],event[i] 
[2],event[i][3]); 
    } 
var params = { 
TableName: "Stations", 
Item: stations 
}; 

DynamoDB.put(params, function (err) { 
if (err) { 
    console.log("ERROR :"+ err) 
} 
    console.log("SUCCESS DynamoDB PUT") 
    }); 

}

Fehler i erhalten:

: Validation: Ein oder mehrere Parameterwerte waren ungültig: die Schlüssel-ID in dem Artikel fehlt

Danke für Hilfe!

Antwort

0

Wenn Sie ein Element in eine DynamoDB-Tabelle einfügen, müssen Sie den Hash-Schlüssel und den Sortierschlüssel (falls verfügbar) in die zu erstellenden oder zu aktualisierenden Parameter einschließen.

Um eine Liste von Elementen zu setzen, können Sie nicht DynamoDB.put Methode verwenden. Stattdessen müssen Sie DynamoDB.batchWrite verwenden.

var AWS = require("aws-sdk"); 
var DynamoDB = new AWS.DynamoDB.DocumentClient(); 
exports.handler = function(event, context) { 
function Station(id, name, latitude, longitude){ 
    this.PutRequest = { 
     Item: { 
      id: id, 
      name: name, 
      latitude: latitude, 
      longitude: longitude 
     } 
    }; 
} 
var stations = new Array(); 
for(var i = 0; i < event.length;i++){ 
    stations[i] = new Station(event[i][0],event[i][1],event[i] 
[2],event[i][3]); 
    } 
var params = { 
    RequestItems: { 
    'Stations': stations 
    } 
}; 
var documentClient = new AWS.DynamoDB.DocumentClient(); 
documentClient.batchWrite(params, function(err, data) { 
    if (err) console.log(err); 
    else console.log(data); 
}); 

Referenz: AWS DynamoDB Document Client JavaScript SDK

Anmerkung: Unter der Annahme, id, name, Breiten- oder Längen Attribut enthält die Hash-Schlüssel und Sortierschlüssel (falls vorhanden).

+0

Vielen Dank, ich habe die Problemumgehung für die Begrenzung von 25 Elementen hinzugefügt, die immer noch einige Probleme beim Rückruf hat, die nicht ausgelöst werden. –