2016-09-02 7 views
5

私のFirebaseデータベースでは、一度に2つの場所に2回書き込む必要があります。私は両方の場所のルールを持っているので、ユーザーは他の場所に同時に書き込むことなくそこに書き込むことができません。Firebaseでマルチロケーションアップデートを実行中にトランザクションを使用するにはどうしたらいいですか?

これらの場所のいずれかへの書き込みは増分/減分する必要があります。もちろん、それはトランザクションを介して行わなければならない。さもなければ、ユーザが同じノードへの他のユーザの同時インクリメント/デクリメント更新を上書きしないことを保証することはできない。

問題は、複数の場所の更新をトランザクションと組み合わせることに関するドキュメントが見つかりません。これはちょうど不可能ですか?

答えて

6

いいえ。単一ノード上のトランザクション機能。

つまり、マルチロケーショントランザクションを実行する場合は、ツリー内の「最下位レベルの共有ノード」でそのトランザクションを実行する必要があります。それは決して良い考えではありません。

代わりに、サーバー側のセキュリティルールを使用してマルチロケーションの書き込みを保護することもできます。この例については、Is the way the Firebase database quickstart handles counts secure?を参照してください。これは基本的に、セキュリティルールを使用して比較および設定操作を作成します。

+0

なぜ、最も低いノードでのトランザクションは「これほど良いアイデアはありませんか? – Junior

+1

この質問は1回の呼び出しで複数の場所を更新することに関するものなので、「最低レベルの共有ノード」は単一のエンティティよりもJSONツリーのほうが高い可能性があります。これは、リソースの競合の可能性がさらに高まり、トランザクションのスケーラビリティが低下することを意味します。 –

+0

ああ。応答していただきありがとうございます。意味あり。 – Junior

関連する問題