AWS Dynamodb放置了一个对象列表(javascript)

时间:2017-09-25 15:06:37

标签: javascript amazon-web-services

我有一个对象列表: [[id,name,latitude,longitude],[id,name,latitude,longitude]]等。

我想将列表推送到名为Stations的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:一个或多个参数值无效:缺少项目中的密钥ID

感谢您的帮助!

1 个答案:

答案 0 :(得分: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,name,latitude或longitude属性包含散列键和排序键(如果可用)。