Node.js DynamoDB put命令正在插入一个空项
我正在本地开发一个nodejs/dynamodb应用程序。我遇到了将项目放入数据库的问题。创建表可以正常工作,当我插入一个项目时,它表示该项目已成功插入,但显示插入了一个空项目 “已添加项:{}” 它应该显示该项的用户名为“bob”,密码为“password”。我使用的是nodejs、npm、dynamodb-local和javascript-aws-sdk的最新版本Node.js DynamoDB put命令正在插入一个空项,node.js,amazon-web-services,amazon-dynamodb,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.Dy
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 );
看到空项的原因是,默认情况下api不会返回插入的项 dynamodbapi使用起来非常笨拙,因为您使用的是nodejs Id,建议您看看如何使用它,它应该提供一个对开发人员更友好的api。保存您的用户数据非常简单,如下所示:
User.create({username : 'bob', password : 'password'}, function (err, user) { });
看到空项的原因是,默认情况下api不会返回插入的项 dynamodbapi使用起来非常笨拙,因为您使用的是nodejs Id,建议您看看如何使用它,它应该提供一个对开发人员更友好的api。保存您的用户数据非常简单,如下所示:
User.create({username : 'bob', password : 'password'}, function (err, user) { });
嗨,瑞安,谢谢你的回复。当我使用query命令尝试获取项目时,它返回undefined。因此,该项目似乎没有被正确地放入。我会看看你发送的链接谢谢!如果amazons自己的sdk不能正常工作,那就太可怕了。应该使用查询api来获取具有相同哈希键和不同范围键的项目列表。在您发布的示例中,我只看到一个哈希键,没有范围。您应该使用getItem api尝试仅通过哈希键获取此项。我尝试了getItem,但仍然返回了相同的结果。我无法理解Amazons JavaScript SDK是否工作?Put和Get应该可以工作,否则为什么他们甚至在生产中有SDK供开发人员使用?那么使用Vogel和SDK有什么区别呢?Vogel是否构建在sdk之上?欢迎AWS javascript sdk确实可以工作,但是DynamoDB api的使用可能会令人困惑和复杂。Vogels库提供了一个更简单、开发人员友好的api,它构建在AWS sdk之上。嗨,Ryan,感谢您的回复。当我使用query命令尝试获取项目时,它返回undefined。因此,该项目似乎没有被正确地放入。我会看看你发送的链接谢谢!如果amazons自己的sdk不能正常工作,那就太可怕了。应该使用查询api来获取具有相同哈希键和不同范围键的项目列表。在您发布的示例中,我只看到一个哈希键,没有范围。您应该使用getItem api尝试仅通过哈希键获取此项。我尝试了getItem,但仍然返回了相同的结果。我无法理解Amazons JavaScript SDK是否工作?Put和Get应该可以工作,否则为什么他们甚至在生产中有SDK供开发人员使用?那么使用Vogel和SDK有什么区别呢?Vogel是否构建在sdk之上?欢迎AWS javascript sdk确实可以工作,但是DynamoDB api的使用可能会令人困惑和复杂。Vogels库提供了一个更简单、开发人员友好的api,它构建在AWS sdk之上。