这是我的Lambda函数:
const AWS = require("aws-sdk");
const dynamodb = new AWS.DynamoDB({region: "ap-southeast-2"});
exports.handler = function(event, context) {
var tableName = "MyTable1";
dynamodb.updateItem({
"TableName": tableName,
"Key": {
"sub": {
"S": event.sub
}
},
"UpdateExpression": "ADD EventID :val1",
"ExpressionAttributeValues": {
":val1": {
"SS": event.EventID
}
},
"ReturnValues": "ALL_NEW",
}, function(err, data) {
if (err) {
context.fail('ERROR: Dynamo failed: ' + err);
} else {
console.log('Dynamo Success: ' + JSON.stringify(data, null, ' '));
context.succeed('SUCCESS');
}
});
}
当我添加或插入新项目时,代码工作正常。
我想做的是先删除项目,然后再进行更新?
我试图通过用SET替换ADD来更改UpdateExpression
"UpdateExpression": "SET EventID :val1",
但是随后出现语法错误。
有人在进行更新之前删除项目的最佳方法是什么吗?
例如,如果我在DymnamoDB中有此数据
ID EventID
789534 { "BA345", "GA932", "TA900" }
使用以下数据进行新的更新
ID EventID
789534 { "CA345"}
它变成
ID EventID
789534 { "CA345"}
因此,基本上每个更新都应像是一个新的/初始添加。
如果不清楚,请随时提出。提前谢谢了。
答案 0 :(得分:0)
要完全替换该项目,您需要使用PutItem
而不是UpdateItem
。两者之间的区别是
API Reference对这些操作和其他操作有更全面的说明。