在dynamodb中唯一主键的conditionalExpression

时间:2017-07-27 18:38:45

标签: amazon-dynamodb

如果主键不存在,我需要插入文档。我试图使用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);
    }
  });

&#34; ConditionalCheckFailedException:条件请求失败&#34; 是console.log语句的输出。

2 个答案:

答案 0 :(得分:2)

当存在具有此主键的对象时,是否抛出异常?比它还好,只需捕获一个异常,如果你需要处理它(可能已经记录该对象)并继续前进。

有了这个,你将进行一次调用,如果一个对象已经存在,它将返回成功,或者如果一个对象已经存在,它将返回异常(你可以捕获并忽略)。

答案 1 :(得分:0)

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