2016-10-27 13 views
1

DynamoDBテーブルのいずれかに文字列が設定されています。PHPとDynamoDBを使用したエントリの更新と作成

このコードは、キーtransaction_idsがすでにアイテムに存在する場合にのみ動作しますが、文字列セットに新しいアイテムを追加し、素晴らしい

$update = $client->updateItem (array (
    'TableName' => 'myTable', 
    'Key' => array (
    'rep_num' => array (
     'S' => $id_num 
    ) 
), 
    'ExpressionAttributeValues' => array (
    ':transaction_ids' => array(
     'SS' => array($transaction_id) 
    ) 
), 
    'UpdateExpression' => 'ADD transaction_ids :transaction_ids' 
)); 

私の問題がある作品。

既存のアイテムにキーが存在しない場合は、このコードを変更してこのキーを作成する方法を教えてください。

答えて

0

アイテムにtransaction_idsがない場合は、属性を作成して値を追加する必要があります。

アイテムに属性transaction_idsがある場合は、新しい値のデータ型が既存のSS属性データ型と一致する限り、値を追加する必要があります。既存のデータ・タイプがセットされ、そして値も設定されている場合、 値を既存のセットに追加された場合

このlink

参照します。たとえば、属性 の値がセット[1,2]であり、追加アクション[3]が指定されている場合、 の最終属性値は[1,2,3]です。 ADDアクションがセット属性に対して が指定され、指定された属性タイプが が既存のセットタイプと一致しない場合、エラーが発生します。

両方のセットには、同じプリミティブデータ型が必要です。たとえば、既存のデータ型が の場合、値は 文字列のセットでなければなりません。

JavaScript APIでテストしました。それは期待どおりに動作します。それはPHPでもうまくいくはずです。

サンプルコード: -

UpdateExpression : "ADD #transaction_ids :transaction_ids ", 
     ExpressionAttributeNames: { 
      '#transaction_ids' : 'transaction_ids', 

     }, 
     ExpressionAttributeValues: {':transaction_ids' : docClient.createSet(["3"])}, 
関連する問題