DynamoDB updateItem(如果属性存在)

问题描述 投票:0回答:1

我需要更新表中项目的 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 插入额外的数据,也许有一种方法可以做到这一点?

amazon-dynamodb
1个回答
0
投票

如果不使用 2 个 API 调用,就无法实现你想要的目标。

但是,如果一种情况的可能性远高于另一种情况,您可以编写逻辑,使得在绝大多数情况下只有 1 个 API 调用。

© www.soinside.com 2019 - 2024. All rights reserved.