ユーザーが契約数を購入するたびに、これらのイベントは、(明確にするために簡略化)が実行されていますデータストアの私のGoogleアプリのアプリ内取引の制限
- user.cashが
- user.contractsを減少させるが増加しています番号
- contracts.current_priceが更新されます。
- market.no_of_transactionsはRDMS 1.
によって増加し、これらは、同じトランザクション内に配置されることになります。 Googleのデータストアでは、複数のモデルのエンティティが同じトランザクション内に存在することはできません。
この問題に対する正しいアプローチは何ですか?書き込みが失敗した場合、先行するすべての書き込みがロールバックされるようにするにはどうすればよいですか?
編集:明らかにエンティティグループが見つかりませんでした。今、私は彼らがどのように使用されているかに関するいくつかのさらなる情報に感謝します。もう1つのポイントは、Googleが「トランザクションに必要なエンティティグループのみを使用します。エンティティ間の他の関係については、クエリで使用できるReferencePropertyプロパティとKey値を使用してください」と述べています。参照プロパティ(クエリを必要とするため)と親子関係(トランザクション)の両方を定義する必要があるということですか?
edit 2最後に、エンティティが2つの親の間にn対nの関係を確立するために作成されている場合、どのようにしてエンティティの2つの親を定義しますか?
@systempuntoout私は、あなたがタスクハンドラ内の別のエンティティグループに書き込むことを意味しました。元のトランザクションではありません。 – ryan
誤解、私の無駄なコメントは数分で蒸発する:)。 – systempuntoout