2016-09-23 78 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) { 

     } 
    });