2017-04-08 81 views

回答

13

要訪問數據庫中的值,請爲該位置創建一個DatabaseReference。以下是位置在數據庫中三個參考:到/ZONES/ZONE_1

  • zone1NameRef

    • zonesRef/ZONES
    • zone1Ref/ZONES/ZONE_1/ZNAME

    DatabaseReference zonesRef = FirebaseDatabase.getInstance().getReference("ZONES"); 
    DatabaseReference zone1Ref = zonesRef.child("ZONE_1"); 
    DatabaseReference zone1NameRef = zone1Ref.child("ZNAME"); 
    

    在這個片段中

    有關更多信息,請參閱Firebase documentation on getting a database reference

    您可以將偵聽器附加到每個引用,以獲取該位置的值。例如,爲了獲得/ZONES/ZONE_1/ZNAME的價值:

    zone1NameRef.addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 
         Log.i(TAG, dataSnapshot.getValue(String.class); 
        } 
    
        @Override 
        public void onCancelled(DatabaseError databaseError) { 
         Log.w(TAG, "onCancelled", databaseError.toException()); 
        } 
    }); 
    

    更多關於這種類型的讀操作,見Firebase documentation on reading values

    如果您改爲收聽/ZONES/ZONE_1,您將獲得具有其所有屬性的整個節點的DataSnapshot。然後,使用DataSnapshot.child()從它那裏得到了ZNAME

    zone1Ref.addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 
         Log.i(TAG, dataSnapshot.child("ZNAME").getValue(String.class); 
        } 
    
        @Override 
        public void onCancelled(DatabaseError databaseError) { 
         Log.w(TAG, "onCancelled", databaseError.toException()); 
        } 
    }); 
    

    一個多層次,你可以聽上/ZONES,這將讓你的快照與所有區域。由於這種處理多個孩子,則需要通過他們與循環DataSnapshot.getChildren()

    zonesRef.addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 
         for (DataSnapshot zoneSnapshot: dataSnapshot.getChildren()) { 
          Log.i(TAG, zoneSnapshot.child("ZNAME").getValue(String.class); 
         } 
        } 
    
        @Override 
        public void onCancelled(DatabaseError databaseError) { 
         Log.w(TAG, "onCancelled", databaseError.toException()); 
        } 
    }); 
    

    更多相關信息,請參閱Firebase documentation on listening for lists of data

    最後,你可能想查詢查找特定的區域,例如找到與區"ZCODE": "ECOR"

    Query zonesQuery = zonesRef.orderByChild("ZCODE").equalTo("ECOR"); 
    zonesQuery.addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 
         for (DataSnapshot zoneSnapshot: dataSnapshot.getChildren()) { 
          Log.i(TAG, zoneSnapshot.child("ZNAME").getValue(String.class); 
         } 
        } 
    
        @Override 
        public void onCancelled(DatabaseError databaseError) { 
         Log.w(TAG, "onCancelled", databaseError.toException()); 
        } 
    }); 
    

    要了解更多關於這一點,閱讀Firebase documentation on sorting and filtering data

  • +0

    謝謝你對我的工作。 – Surekha

    +0

    非常簡單明瞭的解釋。保持與firebase api探索良好的工作! – VVB

    相關問題