2017-11-04 2 views
0

My firebase realtime databaseインクリメントfirebaseデータベース内の子の項目

私がアンドロイドアプリでのようなボタンがクリックされたときに1項目リットルをインクリメントします。

唯一の方法私はそれを行うには知っているが最初ValueEventListenerによってリットルの値を取得し、(アプリ)からその値をインクリメントし、その値に、データベース内のリットルを更新しています。

2人以上のユーザーが同時に同じ値を増やそうとすると、多くの問題が発生する可能性があります。

エラーが発生しないように適切な解決策を教えてください。

+0

これの適切な解決策は、[トランザクション](https://firebase.google.com/docs/database/android/read-and-write#save_data_as_transactions)を使用することです。ドキュメンテーションを読んで、試してみて、問題があればそれを報告することをお勧めします。 –

答えて

0

あなたの関心事は、(どれくらい正確にあなたがその用語を使いたいかによって)並行性または並列性と呼ばれます。あなたは、トランザクションを使用するトランザクションを持っている

を変更するには、データとブリッジのようなものを作成する方法であり、計算が完了するまで、この通信は残ります。

データを取得して追加した後、データを変更します。これはリアルタイムで行われているため、同時に1人以上のユーザーが同じことを行うと、マイナスの影響はほとんどありません(真剣にリアルタイムのデータベースが計算される時間はミリ秒未満です。

これはdocumentationです。トランザクションは、どのようなデータ交換でも一般名のように聞こえるが、そうではない。

もう1つ言及したいことは、UIで何かやインタフェースコールバックを使用する必要がある場合は、onCompleteメソッドで行う必要があります。

+0

ありがとうございました。上記の画像では、私は増分手順で子供の名前をつけたことがわかります。最後のインデックスの** i **値を取得して1に加え、*新しい子供をデータベースはそれによって私は価値がある* ...しかし、そのプロセスは、firebaseトランザクションによって実装することはできません...あなたは私にその解決策を与えることができます –

+0

トランザクションの子を増やし、次にonCompleteで他の – cutiko

関連する問題