2017-09-25 20 views
0

オブジェクトのリストを置くIてきたオブジェクトのリスト: [[ID、名称、緯度、経度]、[ID、名称、緯度、経度]など。AWS DynamoDBのは(ジャバスクリプト)

私はリストをステーションと呼ばれるdynamodbテーブルにプッシュしたいと思います。 これは私がやったことです:

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") 
    }); 

}

エラーは、私が取得:

:にValidationException:1つの以上のパラメータ値が無効であった。項目にキーIDが見つかりません

助けてくれてありがとう!

答えて

0

DynamoDBテーブルにアイテムを配置する場合、作成または更新するパラメータにハッシュキーとソートキー(使用可能な場合)を含める必要があります。

アイテムのリストを入れるには、DynamoDB.putメソッドを使用することはできません。代わりにDynamoDB.batchWriteを使用する必要があります。

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); 
}); 

リファレンス:AWS DynamoDB Document Client JavaScript SDK

注:ID、名称、緯度や経度属性を仮定すると、ハッシュキー(使用可能な場合)ソートキーを含みます。

+0

ありがとう、私はまだコールバックにいくつかの問題が発生していない25要素の制限の回避策を追加しました。 –