2017-08-01 41 views
0

我正在嘗試查詢子節點值,但我不知道父鍵,我想查詢Firebase適配器。我想下面積訪問用戶ID節點,但我不知道父母即-KqPJMsjSb5CbPcq4nXv 這裏的ID記錄的快照: The area node have different Areas under a auto generated Id's 當您不知道父鍵時查詢子值

回答

1

請使用此代碼:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference userIdRef = rootRef.child("areas").child(userId); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String areaId = ds.child("areaId").getValue(String.class); 
      Boolean booked = ds.child("booked").getValue(Boolean.class); 
      Integer bookingHour = ds.child("bookingHour").getValue(Integer.class); 
      //and so on 
      Log.d("TAG", areaId + "/" + booked + "/" + bookingHour); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
userIdRef.addListenerForSingleValueEvent(eventListener); 

在這userId是說,不缺少用戶的ID。

當您對Firebase數據庫執行查詢時,可能會有多個結果。 因此,快照包含這些結果的列表。即使只有一個結果,快照也會包含一個結果列表。

+0

你@AlexMamo提到的解決方案無效,不要忘記區域後面有一個關鍵節點 – Pheonix

+0

你爲什麼這麼想,你有沒有測試它?我可以說它肯定會有效。正如你可能看到的那樣,DatabaseReference userIdRef是'rootRef.child(「areas」)。child(userId)',這意味着我們在樹的'userId'節點右下。使用'getChildren()'意味着我們從那裏獲取所有的孩子。因爲在這個照顧下只有一個孩子,我們可以從該節點獲得所有兒童,例如areaId,預訂,預訂時間等等。 –

+0

它工作嗎,一切都好嗎? –