使用AWS SDK for Node.js将项目放在DynamoDB表上

时间:2013-07-20 23:18:28

标签: javascript node.js amazon-web-services amazon-dynamodb

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

4 个答案:

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