2016-03-19 21 views
1

権限を付与する前にFirebaseからデータを削除したいと思います。問題は、クエリが空でない場合にのみmFirebaseRef.unauth()が機能することです。しかし、クエリが空であっても動作する必要があります。firebaseクエリが空であるかどうかを確認する方法

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

'onChildAdded()'メソッドは、唯一の子が存在する場合** **と呼ばれるので、あなたされます子供がいないときにそれを検出するために使用することはできません。それを検出する方法については、この質問を参照してください:http://stackoverflow.com/questions/34460779/what-happens-if-a-firebase-url-doesnot-exist-and-we-try-to-add-a-listener -to-it/34463972#34463972 –

答えて

3

使用この...

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

デモ例

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(); 
    } 
}); 
関連する問題