如何使用nodejs在dynamoDB中有条件更新项?如果存在,只需单独进行增量 - 它按预期工作。但我正在努力,当项目不存在时,需要添加它,然后下一次迭代做增量。得到此错误" 提供的表达式引用项目中不存在的属性 "。
function increment(data, cb) {
const opt = {
Key: {
id: {S: id},
dateKey: {S: data.dateVal}
},
ExpressionAttributeValues: {
':counter': {N: '' + 1},
':val1': {S: data.val1},
':val2': {S: data.val2}
},
UpdateExpression: 'SET counter=counter+:counter, val1=:val1, val2=:val2',ReturnValues: 'UPDATED_NEW',
TableName:tableName
};
db.updateItem(opt, (err, data) => {
if (err)
return cb(err);
const counter = getCounter(data.Attributes); //private method
return cb(null, counter);
});
}
答案 0 :(得分:0)
如果要增加的项目不存在,则可以假定初始值是“零”,如下所示:
const opt = {
Key: {
id: {S: id},
dateKey: {S: data.dateVal}
},
ExpressionAttributeValues: {
':counter': {N: '' + 1},
':val1': {S: data.val1},
':val2': {S: data.val2},
':zero': {N: 0}
},
UpdateExpression: 'SET counter=if_not_exists(counter, :zero)+:counter, val1=:val1, val2=:val2',ReturnValues: 'UPDATED_NEW',
TableName:tableName
};