use*_*502 20 amazon-web-services
我正在尝试更新我的Dynamodb表+用户+中的项目.我尝试了很多不同的方法,但我总是收到相同的错误消息:
提供的关键元素与架构不匹配
项的创建起作用,以及查询但不是更新.当我检查DynamoDB时,用户创建得很好:
{
"email": "test@email.com",
"password": "123",
"registration": 1460136902241,
"verified": false
}
Run Code Online (Sandbox Code Playgroud)
这是表格信息:
这是代码(从lambda调用):
exports.handler = function(event, context)
{
var AWS = require("aws-sdk");
var docClient = new AWS.DynamoDB.DocumentClient();
var params = {
TableName: "Users",
Item:{
email: "test@email.com",
password: "123",
verified: false,
registration: (new Date()).getTime(),
}
};
// Create the user.
docClient.put(params, function(err, data)
{
if (err)
{
context.fail("Put failed...");
return;
}
var params = {
TableName: "Users",
Key: { email : "test@email.com" },
AttributeUpdates: {
verified: {
Action: "PUT",
Value: true
}
}
};
// Update the user.
docClient.update(params, function(err, data)
{
if (err)
{
console.log(JSON.stringify(err));
context.fail(JSON.stringify(err));
return;
}
context.succeed("User successfully updated.");
});
});
};
Run Code Online (Sandbox Code Playgroud)
你知道我的代码中有什么问题吗?
Mar*_*k B 37
您只提供一半的主键.您的主键是分区键和范围键的组合.您需要Key
在更新参数中包含属性中的范围键.
har*_*ren 13
对于其他面临相同挑战并且问题未通过上述答案解决的人,最好仔细检查正在更新的值的数据类型,在我的情况下,主键需要一个数字,而我正在尝试更新用字符串。傻我
我的问题是用于删除的 Node SDK,文档中说要提供以下格式:
... {Key: {'id': {S: '123'}}} ...
Run Code Online (Sandbox Code Playgroud)
这似乎不适用于aws-sdk ^2.1077.0
. 这似乎有效:
... {Key: {'id': '123'}} ...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35302 次 |
最近记录: |