gpt4 book ai didi

node.js - 使用 Nodejs 进行 DynamoDB 条件更新

转载 作者:行者123 更新时间:2023-12-02 15:21:59 26 4
gpt4 key购买 nike

如何使用 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);
});
}

最佳答案

如果您要递增的项目不存在,您可以假设初始值为“零”,如下所示:

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
};

关于node.js - 使用 Nodejs 进行 DynamoDB 条件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45312008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com