2016-09-23 75 views
0

我想從以下火力地堡數據庫中刪除特定的值是我所存儲從火力地堡數據庫中刪除特定值

enter image description here

現在的數據庫,我想刪除以下值

fname: "John"

lname: "wick"

enter image description here

Here, What i have try to delete specific value from Firebase..

DatabaseReference demo = mReference.child("demo").orderByValue().equalTo("John").getRef(); 

    demo.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      dataSnapshot.getRef().removeValue(); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

但是,這將刪除數據庫中的所有值...

Question如何刪除特定值???我必須做的

任何幫助將不勝感激。

回答

2

而不是使用addListenerForSingleValueEvent嘗試如下使用addChildEventListener的,

Query queryRef = mReference.child("demo").orderByChild("fname").equalTo("John"); 

queryRef.addChildEventListener(new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot snapshot, String previousChild) { 
     snapshot.getRef().setValue(null); 
    } 
}); 
+0

感謝您的迴應,, ..但沒有發生! –

+0

@UttamPanchasara請檢查我的答案,我現在更新! –

+0

謝謝......你的解決方案像魅力一樣也檢查我的答案,這也是我的工作。 –

0

,您可以嘗試:

mReference.child("demo").orderByChild("fname").equalTo("John").addListenerForSingleValueEvent(
       new ValueEventListener() { 
        @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       dataSnapshot.getRef().setValue(null); 
      } 


      @Override 
      public void onCancelled(DatabaseError databaseError) { 
        Log.w("TodoApp", "getUser:onCancelled", databaseError.toException()); 
      } 
    }); 
+0

已經試試這個,不工作...'dataSnapshot.getRef()removeValue();'和'dataSnapshot.getRef()的setValue(NULL);'都是同樣的事情..閱讀火力DOC .. https://firebase.google.com/docs/database/android/save-data#delete_data –

+0

您是否嘗試:'mReference.child(「demo」)。orderByChild(「fname」)。equalTo(「John」 )' –

+0

是的......沒有工作 –

1

喜嘗試使用此代碼,

mReference.child("demo").orderByChild("fname").equalTo("John").addListenerForSingleValueEvent(
      new ValueEventListener() { 
       @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      mReference.child("demo").child(dataSnapshot.getKey()).setValue(null); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
       Log.w("TodoApp", "getUser:onCancelled", databaseError.toException()); 
     } 
}); 
+0

非常感謝您的回覆我在回答中找到了一些答案。看我的解決方案。 –

0

好感謝所有,修改後有很多答案和查詢..這是我的工作。

mReference.child("demo").orderByChild("fname").equalTo("John").addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      mReference.child("demo").child(dataSnapshot.getKey()).setValue(null); 

      //also work 
      //dataSnapshot.getRef().setValue(null); 
     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    });