2017-02-06 3 views
0

aws/aws-sdk-php 3.21.6を使用しています。私は、ConditionExpressionがConditionalCheckFailedExceptionエラーを満たしたときにReturnValuesがどのように機能するのかを誤解しているはずです。ReturnValuesパラメータを持つDynamoDB UpdateItemは、失敗したConditionExpressionには何も返しません。

私が期待しているのは、ConditionExpressionが失敗し、ConditionalCheckFailedExceptionがトリガーされ、この例外を受け取り、ReturnValues経由で新しい属性DDにアクセスできることです。

ドキュメントAttributes I'm expecting from ReturnValuesはこれを暗示しているようです。

ただし、テストから、ConditionExpressionがtrueの場合はReturnValuesのみが返され、失敗した場合は返されません。

$response = $client->updateItem([ 
    'TableName' => 'MyTable', 
    'Key' => [ 
     'customer_url' => [ 
      'S' => 'someurl.com' 
     ], 
     'customer_platform' => [ 
      'S' => 'some_platform' 
     ] 
    ], 
    'ExpressionAttributeNames' => [ 
     '#C' => 'createdAt' 
    ], 
    'ExpressionAttributeValues' => [ 
     ':val1' => [ 
      'S' => '2017-01-24T14:15:32' 
     ], 
     ':val2' => [ 
      'S' => '2017-01-24T14:15:30' 
     ] 
    ], 
    'UpdateExpression' => 'set #C = :val1', 
    'ConditionExpression' => '#C = :val2', // :val2 originally was 2017-01-24T14:15:30, before attempting to update to 2017-01-24T14:15:32. If I change the field to 2017-01-24T14:15:31, before running this update it will throw the ConditionalCheckFailedException 
    'ReturnValues' => 'ALL_NEW' 
]); 

答えて

0

updateItemが成功した場合はい、ReturnValuesのみ移入されます。それが失敗した場合、ConditionalCheckFailedExceptionまたはその他の理由により、ReturnValuesはnullになります。あなたは、彼らが前またはそれらがを更新しました後のいずれか登場してアイテム属性を取得したい場合は

使用ReturnValues:強調鉱山で、hereからドキュメントをサポート

関連する問題