2017-07-27 62 views
0

如果主键不存在,我需要插入文档。我试图用conditionExpression解决这个问题,但似乎失败了。dynamopb中唯一主键的conditionalExpression

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语句的输出。

回答

1

是否存在具有此主键的对象时引发异常?如果你需要(可能已经记录那个对象存在)并继续前进,那么就比较好,只需要捕获一个异常。

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

0

ConditionalCheckFailedException的唯一解决方案是在插入前得到并检查。

+0

这被称为“check-then-act”反模式 –