2016-12-15 1 views
8

मुझे कैसे पता चलेगा कि फायरबेस डीबी नोड में कोई बच्चा नहीं है? श्रोताओं के साथ डेटा प्राप्त करने का एकमात्र तरीका लगता है, और जब कुछ जोड़ा या निकाला जाता है तो वे केवल आग लगते हैं। दूसरे शब्दों में, यदि कोई बच्चा नहीं है, तो कुछ भी आग नहीं लगेगा।फायरबेस डीबी: जांच करें कि नोड में कोई बच्चा नहीं है?

+0

https://firebase.google.com/docs/reference/android/com/google/firebase/database/DataSnapshot.html#hasChildren() –

उत्तर

4

आप addValueEventListener का उपयोग कर सकते हैं, और onDataChange में आपके पास कोई बच्चा जांचने का कोई तरीका नहीं होगा।
जब श्रोता जुड़ा हुआ है क्योंकि इस docs

इस विधि arcoding एक बार शुरू हो रहा है addValueEventListener काम करेंगे और फिर हर बार बच्चों सहित डेटा, परिवर्तन

ref.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     // As cricket_007 we also can use hasChildren or getChildrenCount 
     if(!snapshot.hasChildren()){ 
      // db has no children 
     } 

     // OR this way 
     if(snapshot.getChildrenCount() == 0){ 
      // db has no children 
     } 

     // OR this way 
     for (DataSnapshot postSnapshot : snapshot.getChildren()) { 
      // db has no children 
     } 
    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
    } 
}); 
+0

क्या होगा यदि विशिष्ट नोड में बहुत अधिक बच्चे हों? निष्पादन करते समय यह दृष्टिकोण बहुत महंगा होगा। –

2

आप देख सकते हैं childFirebase में getChildrenCount() या exists() विधि DataSnapshot का उपयोग करके मौजूद है या नहीं।

searchFirebaseRef.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

     Log.d("FIREBASE",String.valueOf(dataSnapshot.getChildrenCount())); 
     String childrenCount = String.valueOf(datasnapshot.getChildrenCount()); 

     if(childrenCount != null){ 

      }else{ 

      //No childrens in Firebase Database 
     } 

//OR 

     if(!dataSnapshot.exists()){ 

      //No data 

     } 


     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) { 


     } 

    }); 

अधिक जानकारी के लिए यह doc देखें। मैं आशान्वित हूं कि इससे आपको सहायता मिलेगी।

संबंधित मुद्दे