我有一个对象列表: [[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
感谢您的帮助!
答案 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属性包含散列键和排序键(如果可用)。