Amazon dynamodb dynamodb中唯一主键的条件表达式

Amazon dynamodb dynamodb中唯一主键的条件表达式,amazon-dynamodb,Amazon Dynamodb,如果主键不存在,我需要插入一个文档。我试图用条件表达式解决这个问题,但似乎失败了 const primaryKey = "4234241"; const tableSpec = { TableName: 'tableName', Item: params, ConditionExpression: '#primaryId <> :primaryId', ExpressionAttributeNames: {'#primaryId': 'primaryI

如果主键不存在,我需要插入一个文档。我试图用条件表达式解决这个问题,但似乎失败了

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);
    }
  });
常量primaryKey=“4234241”; const tableSpec={ TableName:“TableName”, 项目:参数, 条件表达式:'#primaryId:primaryId', 表达式属性名称:{'#primaryId':'primaryId'}, 表达式属性值:{ “:primaryValue”:primaryValue } }; var docClient=new AWS.DynamoDB.DocumentClient(); put(表规范,函数(错误,数据){ 如果(错误){ 控制台日志(err); } });
“ConditionalCheckFailedException:条件请求失败”是console.log语句的输出

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

当具有此主键的对象存在时,是否会引发异常?这样就可以了,只要捕获一个异常,如果需要(可能记录该对象已经存在)处理它,然后继续

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

这称为“检查然后执行”反模式