【问题标题】:Dynamodb putItem written twiceDynamodb putItem 写了两次
【发布时间】:2019-10-11 17:46:57
【问题描述】:

我是 AWS 的新手,我觉得我错过了一些重要的东西。

我正在使用 nodeJS 中的 lambda 函数中的这段代码在 DynamoDB 表中创建一个条目:

function recordUser(item) {
    return ddb.putItem({
        TableName: 'Users',
        Item: item,
        Expected: {
            username: { Exists: false }
        }
    }).promise();
}

用户名是我的表的主键。

我虽然条件会限制重复出现,但我仍然看到一些具有相同用户名的重复条目,我错过了什么?

【问题讨论】:

  • 你的表的主键属性是什么?
  • 我同意马修的观点。我们需要知道你的主键是什么。主键是分区键还是分区键+排序键(称为复合主键)。解决方案将根据您对此问题的回答而有所不同。
  • 主键是用户名字段

标签: node.js amazon-web-services aws-lambda amazon-dynamodb


【解决方案1】:

您对“预期”的解释是错误的……您似乎希望它检查数据库中是否存在具有“用户名”属性给定值的任何现有项目。但这不是 Expected 所做的......它做了一些非常不同的事情:它读取 一个 特定项目 - 与您在“项目”中指定的具有相同键的项目,然后检查是否此特定项目,其“用户名”属性存在一个值(任何值!)。

要建议如何修复您的用例,我们需要了解有关您的数据的更多信息。当然,最简单的解决方案是拥有一个唯一键是“用户名”的表,每个用户名只允许一个项目。但我不知道这是否足以满足您的用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2016-01-25
    • 2020-08-16
    • 1970-01-01
    相关资源
    最近更新 更多