2017-02-16 4 views
0

Firebaseデータベースに次のデータがあるとします。データは、特定のゲームにいる2人のプレイヤーをすばやく見るために必要です。親を知らずにFirebaseの子供を更新するには?

ここで、John Doe(user-ID = UID-1)の名前を1つのクエリで更新したいとします。理想的には、このようなことをする方法があります。これは明らかにそのデータが利用可能であるとして、あまりにもの別のブランチをお尻(これは最初のプレイヤーが参加すべてのゲームをチェックすることで解決できる擬似コード... :-)

Firebase.ref('/game-players/*/UID-1').update("John with a different Doe")

"game-players" : { 
    "game-1" : { 
    "UID-1" : "John Doe", 
    "UID-2" : "Donald Trump" 
    }, 
    "game-2" : { 
    "UID-1" : "John Doe", 
    "UID-3" : "Barrack Obama" 
    } 
} 

ですツリー)、しかし私はそのデータに基づいてたくさんの異なるクエリを生成しなければならないという考えが嫌いです。

私は正しい方向に私を置くことができますか?

答えて

0

データ構造を変更する必要があります。

players: 
|--uidxx 
|---- name 
|---- surname 
|---- ... 
|--uidx2 
|---- name 
|---- surname 
|---- ... 

game-players : 
|-- game-1 : 
|---- uidxx : true, 
|---- uidx2 : true, 

playersノードでは、すべてのプレーヤーにデータ(名前など)を入れます。
gameplayersノードでは、プレーヤーではなく、データではなくuidを使用します。
この方法では、すべてのゲームを照会せずにプレーヤーノードのデータを更新するだけです。

+0

ええと...しかし、これは逆正規化と「データ構造があなたのユースケースに従う」という点で矛盾していませんか?つまり、ゲームごとにすべてのユーザー名を含むリストを印刷する場合は、2つのクエリを実行する必要があります。 – Jake84

+0

これは、次のようなフラットなデータです。https://firebase.google.com/docs/database/android/structure-data#flatten_data_structures –

関連する問題