2016-03-19 25 views
1

Ich möchte die Daten aus Firebase löschen, bevor die Autorisierung aufgehoben wird. Das Problem ist, dass mFirebaseRef.unauth() nur funktioniert, wenn die Abfrage nicht leer ist. Aber ich brauche es zu arbeiten, auch wenn die Abfrage leer ist.So überprüfen Sie, ob die Firebase-Abfrage leer ist

final Firebase pushNotificationRef = new Firebase(Constant.FIREBASE_URL_PUSHNOTIFICATIONS); 
    final Query queryRef = pushNotificationRef.orderByChild("deviceToken").equalTo(token); 
    queryRef.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      if (dataSnapshot.exists()) { 
       Log.e("MyTag", dataSnapshot.getKey()); 
       pushNotificationRef.child(dataSnapshot.getKey()).removeValue(); 
      } 
      mFirebaseRef.unauth(); 
     } 
+0

Die 'onChildAdded()' Methode wird nur aufgerufen werden, wenn ** ** ein Kind vorhanden ist, so dass Sie kann es nicht verwenden, um zu erkennen, wenn kein Kind anwesend ist. Sehen Sie sich diese Frage an, um herauszufinden, wie: http://stackoverflow.com/questions/34460779/what-happens-if-a-firebase-url-doesnot-exist-and-we-try-to-add-a-listener -to-it/34463972 # 34463972 –

Antwort

3

Verwendung dieses ...

if (dataSnapshot.exists()) 
    // user found 
else 
    // user not found 

Demo Beispiel

Query query = dbstud.child("users").orderByChild("name").equalTo("XYZ"); 

query.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 

     if(dataSnapshot.exists()) { 
     for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 


       Toast.makeText(getApplicationContext(), "id = " + snapshot.getKey(), Toast.LENGTH_LONG).show(); 
      } 

     } 
     else { 
      Toast.makeText(getApplicationContext(), "User Not found ", Toast.LENGTH_LONG).show(); 


     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     throw databaseError.toException(); 
    } 
});