【问题标题】:Put in table if item does not exist in DynamoDB如果项目在 DynamoDB 中不存在,则放入表中
【发布时间】:2019-08-04 06:37:36
【问题描述】:

我只想添加不存在的项目。我不知道该怎么做。目前我在不检查条件的情况下成功添加(无论项目是否存在,它都会添加)。代码是:

const params = {
    TableName: MY_TABLE,
    Item: myItem
};


documentClient.put(params).promise()
    .catch(err => { Logger.error(`DB Error: put in table failed: ${err}`) });

}

我需要添加什么才能让代码检查项目是否存在,如果存在,则返回?

注意:我不想使用数据库映射器。我希望使用 AWS.DynamoDB 类编写代码

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb dynamodb-queries


    【解决方案1】:

    DynamoDB 支持Conditional Writes,允许您为要插入/更新的项目定义需要成功的检查。

    【讨论】:

      【解决方案2】:

      DynamoDB 不是 SQL 数据库(希望您知道这一点...),并且不提供全套 ACID 保证。你不能用它做的一件事是原子的“检查和写入”——你所能做的就是获取项目,看看它是否存在,然后放置项目。但是,如果其他过程将项目连接到“获取”和“写入”之间的表格,您将一无所知。

      如果您绝对需要这种行为,DynamoDB 不是正确的解决方案。

      【讨论】:

      猜你喜欢
      • 2018-06-16
      • 2022-01-10
      • 2023-03-17
      • 2014-01-22
      • 2017-07-21
      • 2015-12-26
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多