我是javascript和node.js的新手,想知道是否有人可以帮我弄清楚通过他们的node.js SDK将新项目放到AWS Dynamodb上的现有表格上的语法。这是我到目前为止所拥有的。我正在尝试做什么的例子?如果有人能指出我正确的方向,那将非常感激。
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
AWS.config.update({region: 'us-east-1'});
var dynamodb = new AWS.DynamoDB();
var item = {
// I need to put the an item with a the primary key of "id", and an attribute called "item"
// I'm new to js and node.js, so if somebody could help me understand the documentation
// http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB_20120810.html
}
dynamodb.putItem({TableName: 'log_dev', Item: item}, function(err, data){
if (err) {
console.log(err); // an error occurred
} else {
console.log(data); // successful response
}
});
答案 0 :(得分:28)
dynamoDB.putItem(
{
"TableName": "Table1",
"Item": {
"Color": {"S": "white"},
"Name": {"S": "fancy vase"},
"Weight": {"N": "2"},
"LastName":{"S": "Kumar"}
}
}, function(result) {
result.on('data', function(chunk) {
console.log("" + chunk);
});
});
console.log("Items are succesfully ingested in table ..................");
答案 1 :(得分:4)
我希望你的“id”是数字......
var item = {
"id": {"N": 1234},
"title": {"S": "Foobar"}
}
请注意,使用DynamoDB,您可以在创建表时指定数据类型( N »数字, S »字符串, B »二进制文件),仅适用于主键( HashKey 或 HashKey + RangeKey )。允许所有其他列的数据类型不同,并且可以将其视为键值对。因此,DynamoDB必须始终使用项属性对数据类型进行编码。
答案 2 :(得分:1)
我认为muhqu的答案不起作用,我相信该属性的值必须是一个字符串。
var item = {
"id": {"N": "1234"},
"title": {"S": "Foobar"} }
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#putItem-property
答案 3 :(得分:0)
我建议使用documentClient
,因为它可以更轻松地在dynamoDb中读取和写入数据。另外,使用条件putItem将确保该项目是唯一的,并且不会覆盖现有项目。 “ attribute_not_exists”检查示例中的userId是否不存在。如果userId存在,则会引发错误。希望还不晚:P
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
AWS.config.update({region: 'us-east-1'});
var dynamodb = new AWS.DynamoDB.DocumentClient();
var item = {
"userId" : {"N":"12345678"},
"name":{"S":"Bob"}
}
var dbParam= {
TableName: tableName,
Item:item,
ConditionExpression: 'attribute_not_exists(#u) or #u = :userId',
ExpressionAttributeNames: { "#u" : "userId"}
}
dynamodb.putItem(dbParam, function(err,data) {
if(err){
console.log("err",err);
}
else{
console.log("data",data)
}
});