我正在尝试通过将isRelevant
的值更改为true
来更新项目
var params = {
TableName: "test",
Key: {
"#date": data.Items[i].date.N,
"accountid": data.Items[i].accountid.S
},
UpdateExpression: "set #uu = :x",
ExpressionAttributeValues: {
":x": {"BOOL": false}
},
ExpressionAttributeNames: {
'#uu': "isRelevant",
'#date': "date"
}
};
docClient.update(params, function(err, data) {
if (err) console.log(err);
else {
console.log('worked');
}
});
这段代码中有什么错误?我尝试了所有可能的方法,但仍然不起作用!
发布于 2018-10-24 06:04:15
你不需要在dynamo中为你的键使用属性名映射。
目前,您的params读起来就像您有一个名为'#date‘的键,并且您随机声明了一个名为'#date’的属性,但您并没有使用它。
相反,请尝试:
var params = {
TableName: "test",
Key: { "date": data.Items[i].date, "accountid": data.Items[i].accountid },
UpdateExpression: "set #uu = :x",
ExpressionAttributeValues: { ":x": false },
ExpressionAttributeNames: { '#uu': "isRelevant" }
};
另外--当使用DynamoDB.DocumentClient时,你应该使用JSON值,它将以发电机类型的格式处理编组信息。
发布于 2018-10-24 13:49:02
如果您date
id在dynamoDB中不是Key
,那么您就必须在ConditionExpression
中使用
示例:
let queryParams = {
TableName: "test",
Key: {
'accountid': data.Items[i].accountid
},
UpdateExpression: "set #uu = :x",
ConditionExpression: 'date = :date',
ExpressionAttributeValues: {
':x': false,
':date': data.Items[i].date,
},
ExpressionAttributeNames: {
'#uu': "isRelevant"
}
};
https://stackoverflow.com/questions/52958274
复制相似问题