DynamoDB put命令正在插入一个空项

时间:2015-11-16 06:27:29

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

我正在本地开发nodejs / dynamodb应用程序。我遇到了将项目放入数据库的问题。创建表格工作正常,当我插入一个项目时,表示项目已成功插入,但显示已插入空项目

  

“已添加项目:{}”

它应该显示该项目的用户名为“bob”,密码为“password”。我使用的是最新版本的nodejs,npm,dynamodb local和javascript aws-sdk。

var dynamodb = new AWS.DynamoDB();

var dynamodbDoc = new AWS.DynamoDB.DocumentClient();

var createUsersTable= {
    TableName : "Users",
    KeySchema: [
        { AttributeName: "username", KeyType: "HASH"}
    ],
    AttributeDefinitions: [
        { AttributeName: "username", AttributeType: "S" }
    ],
    ProvisionedThroughput: {
        ReadCapacityUnits: 1,
        WriteCapacityUnits: 1
    }
};

dynamodb.createTable(createUsersTable, function(err, data) {
    if (err) {
        console.error("Unable to create table. Error JSON:", JSON.stringify(err, null, 2));
    } else {
        console.log("Created table. Table description JSON:", JSON.stringify(data, null, 2));
    }
});



setTimeout( function(){
    var table = "Users";

    var username = 'bob';

    var params = {
        TableName:table,
        Item:{
            "username": 'bob',
            "password": 'password'
        }
    };

    console.log("Adding a new item...");
    dynamodbDoc.put(params, function(err, data) {
        if (err) {
            console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
        } else {
            console.log("Added item:", JSON.stringify(data, null, 2));
        }
    });

}, 4000 );

1 个答案:

答案 0 :(得分:0)

您看到空项目的原因是因为默认情况下PutItem api不会返回已插入的项目。

使用DynamoDB api非常笨拙,因为你正在使用nodejs Id建议看一下使用vogels,它应该提供更多开发人员友好的api。保存用户数据非常简单:

User.create({username : 'bob', password : 'password'}, function (err, user) { });