我需要更新表中项目的 3 个属性,但仅当其他属性存在时才更新其中之一:
旧对象=>
let input = {
Key: {
PK: {
S: "xxx"
},
SK: {
S: "yyy"
}
},
ExpressionAttributeValues: {
":ts": {
N: Date.now() + ""
},
":st": {
S: "zzz"
}
},
ExpressionAttributeNames: {
"#TS": "Timestamp",
"#STS": "Status"
},
UpdateExpression: "SET #TS = :ts, #STS = :st",
TableName: "WhatsappMessenger"
};
let command = new UpdateItemCommand(input);
新对象=>
let input = {
Key: {
PK: {
S: "xxx"
},
SK: {
S: "yyy"
}
},
ExpressionAttributeValues: {
":ts": {
N: Date.now() + ""
},
":st": {
S: "zzz"
}
},
ExpressionAttributeNames: {
"#TS": "Timestamp",
"#STS": "Status",
"#V1": "Value",
"#V2": "Value"
},
UpdateExpression: "SET #TS = :ts, #STS = :st, **???**",
TableName: "WhatsappMessenger"
};
let command = new UpdateItemCommand(input);
我需要粘贴什么来添加这个“#V1 = if (#V2)“aaa””逻辑?
我不想调用 2 次 dynamodb 来向 item 插入额外的数据,也许有一种方法可以做到这一点?
如果不使用 2 个 API 调用,就无法实现你想要的目标。
但是,如果一种情况的可能性远高于另一种情况,您可以编写逻辑,使得在绝大多数情况下只有 1 个 API 调用。