2017-03-03 5 views
1

少し説明するのは難しいですが、私はそれを行ってもらえます。Firebase - ref Bの値を使ってref Aから値を取得する最も良い方法は?

基本的には、1つの店舗の場所と他の店舗ユーザーの2つのテーブルがあります。その間の流れは次のとおりです。 - クエリごとに場所を取得する(完了) - クエリの場所に一致するユーザーを取得します。

現在、私は場所からユーザーまでのすべての対応するキーを持っています。必要な場所を取得した後、ユーザーの詳細を取得するための正確かつ迅速な方法は何ですか。

私はすでにその場所のユーザーを参照しているので、ユーザーの場所をどのように取得するのか尋ねる必要はありません。 ユーザーが詳細を取得するための2番目のリスナーを作成する必要がありますか?

PS私はfirebaseで新しいです、すべてのヘルプは非常に高く評価されます!

答えて

1

はい、あなたは正しいです、それはあなたがそれを行うことが一つの方法である:クエリは、私はちょうど子供のイベントリスナーから他のすべてのメソッドを切り取ってきたこの

final DatabaseReference root = FirebaseDatabase.getInstance().getReference(); 
    Query locationQuery = root.child("location").orderByChild("place").equalTo("london"); 
    locationQuery.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

      // I am assuming you have your own custom location class that you push to firebase 
      Location location = dataSnapshot.getValue(Location.class); 

      // make the second query inside the on Child Added method 

      Query userQuery = root.child("users").orderByChild("location").equalTo(location); 

      userQuery.addChildEventListener(new ChildEventListener() { 
       @Override 
       public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

        // again I am assuming you have your own custom user class 
        User user = dataSnapshot.getValue(User.class); 

       } 

     } 


} 

のように続くかもしれません。 最初のクエリは、あなたのロケーションテーブルで行います。次に、onChildAddedメソッドで返された各場所について、別のクエリをusersテーブルに作成し、返された場所でクエリを作成します。

+0

あなたのご協力ありがとうございます! – Xirlas

関連する問題