1

単一の API を使用して DynamoDB テーブルのレコードをスキャンおよび更新するオプションはありますか? フィールド (ItemID、ItemName、ItemAssigned) を持つ項目テーブルに項目のリストがあるとします。ItemID は、テーブルのハッシュ キーです。アイテム ID は、アイテム 1、アイテム 2、アイテム 3 などのように名前が付けられます。ユーザーは、テーブル内のアイテムが何であるかを知りません。そのため、アプリでユーザーが「アイテムを取得」ボタンをタップすると、ランダムなアイテムが取得され、ユーザーに割り当てられます。次に、ItemAssigned が YES に設定されます。[アイテム] タブ アイテムは他のユーザーに割り当てられません。これが起こることです。

手順:
1. [アイテムを取得] をタップします。
2. ItemAssigned = NO のアイテム テーブルから最初のアイテムをスキャンします
。 3. ホーム画面にアイテムを表示します
。 4. Items テーブルのアイテムを更新して、ItemAssigned = YES に設定し ます。

これは、一度に 1 人のユーザーがアイテムを取得しようとしている場合にうまく機能します。この問題は、2 人のユーザー A と B が同時にアイテムを取得しようとしていて、両方のユーザーに同じアイテムが割り当てられている場合に発生します。

したがって、最初に A がアイテムを取得します。Items テーブルが更新されて ItemAssigned = YES に設定される前に、B も同じ項目をフェッチします。これで、A と B の両方のホーム画面に同じアイテムが表示されます。これは間違っています。

唯一の方法は、単一の API を使用して Items テーブルをスキャンして更新することです。Amazon DynamoDB でこれを行う可能性はありますか?

ありがとう。

4

1 に答える 1

4

残念ながら、1 回の操作でスキャンと更新を行う API はありません。これにより、「ItemAssigned = NO」の場合にのみ「ItemAssigned = YES」を設定できるようなチェックアウトのような機能を実装できるため、条件付き PUT アイテムを調べることができます。

アプリケーション コードは、スキャン結果を処理する際に例外を適切に処理する必要がありますが、1 人のユーザーのみに項目の表示を許可するという、要求しているワークフローを可能にします。

PUT アイテムの API ドキュメント

于 2012-11-27T14:47:44.687 に答える