2017-03-03 50 views
1

有點難以解釋,但我會給它一個去。Firebase - 從ref B獲取值的最佳方法是從ref B獲取值?

基本上我有兩個表,一個商店位置和其他商店的用戶。流程如下: - 根據查詢獲取位置(已完成) - 獲取匹配查詢中位置的用戶

目前我擁有從位置到用戶的所有相應密鑰。獲取所需位置後,獲取用戶詳細信息的正確和最快的方式是什麼?

我不是問如何根據位置獲取用戶,因爲我已經引用了位置的用戶,我只是想知道如何執行獲取用戶的詳細信息。 我應該爲用戶創建第二個偵聽器來獲取他們的詳細信息嗎?

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方法中返回的每個位置,您將對用戶表進行另一個查詢,並根據返回的位置進行查詢。

+0

太棒了,感謝您的幫助! – Xirlas

相關問題