【问题标题】:conditionalExpression for unique primary key in dynamodbdynamodb 中唯一主键的条件表达式
【发布时间】:2017-07-27 18:38:45
【问题描述】:

如果主键不存在,我需要插入一个文档。我曾尝试使用 conditionExpression 解决此问题,但似乎失败了。

const primaryKey = "4234241";
const tableSpec = {
    TableName: 'tableName',
    Item: params,
    ConditionExpression: '#primaryId <> :primaryId',
    ExpressionAttributeNames: {'#primaryId': 'primaryId'},
    ExpressionAttributeValues: {
        ':primaryValue': primaryValue
    }
  };
  var docClient = new AWS.DynamoDB.DocumentClient();
  docClient.put(tableSpec, function (err, data) {
    if (err) {
      console.log(err);
    }
  });

“ConditionalCheckFailedException: 条件请求失败” 是 console.log 语句的输出。

【问题讨论】:

    标签: amazon-dynamodb


    【解决方案1】:

    存在具有此主键的对象时是否会引发异常?没关系,只需捕获一个异常,如果需要处理它(也许记录该对象已经存在)并继续。

    有了这个,您将进行一次调用,如果创建了一个对象,它将返回成功;如果对象已经存在,则返回一个异常(您可以捕获和忽略)。

    【讨论】:

      【解决方案2】:

      ConditionalCheckFailedException 的唯一解决方案是在插入之前获取并检查。

      【讨论】:

      • 这被称为“check-then-act”反模式
      猜你喜欢
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多