2017-07-27 2 views
0

プライマリキーが存在しない場合は、ドキュメントを挿入する必要があります。私はconditionExpressionを使ってこれを解決しようとしましたが、失敗するようです。条件式DynamoBのユニークプライマリキーの表現

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

これは「チェック・アンド・アクト」防止パターンと呼ばれます。 –