2017-01-30 6 views
0

私は一度に複数のデータベースの場所を聞く必要があるプロジェクトを作成しました。複数のデータベース参照を聞く

{ 
    "A": [data-a], 
    "B": [data-b], 
    "C": [data-c] 
} 

は何も変更されますたびに、追加または場所ABまたはC私は、AndroidでListViewの内側に起こったアクションを表示したい時に削除します。

私はこれを実現するために、プロジェクトに次のコードを追加しました。

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("A"); 
databaseReference.addChildEventListener(new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
    //Child got added 
    } 

    @Override 
    public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
    //Child got changed 
    } 

    @Override 
    public void onChildRemoved(DataSnapshot dataSnapshot) { 
    //Child got removed 
    } 

    @Override 
    public void onChildMoved(DataSnapshot dataSnapshot, String s) { 
    //Child got moved 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
    //Some error happened 
    } 
}); 

今質問します。それぞれの場所に複数のリスナーが必要ですか、それとももっと簡単な方法ですべての変更について何とか通知できますか?

+0

https://groups.google.com/forum/#!searchin/firebase-talk/join|sort:date/firebase-talk/DKnBnI0bqoI/YMrp-L1hBgAJ – Kato

答えて

1

はい、複数の参照と子リスナーを追加する必要があります。 Firebaseには、SQLデータベースに存在するユニオン、ジョイン、その他の演算子の概念はありません。取得するデータのコレクションと、アクセスするために使用する参照/リスナーとの間には1対1の関係があります。ワイルドカードまたは他のメカニズムを使用して、1回の呼び出しで同時に複数のデータ・コレクションにアクセスすることはできません。

+0

も参照してください。しかし、それを追加するのはあいまいではありません。For 3 dbリファレンス用の3つの子リスナーを想定します。 DBリファレンスごとに1:1チャイルドリスナーを実装する必要がありますか? –

+0

あいまいな言葉が何であるか分かりませんが、これはFirebaseの標準的な習慣です。 FirebaseUIを見ると、まさにこれを行う "索引付けされた"データソースの実装が見つかるでしょう。一つのマスタークエリを作成し、各子の子参照を個別に取得します。 –

関連する問題