Android 从Firebase数据库中删除特定值
我想从Firebase数据库中删除特定值,以下是我存储的数据库 现在,我想删除以下值Android 从Firebase数据库中删除特定值,android,android-studio,firebase,firebase-realtime-database,Android,Android Studio,Firebase,Firebase Realtime Database,我想从Firebase数据库中删除特定值,以下是我存储的数据库 现在,我想删除以下值 fname:“约翰” lname:“wick” 这里是我试图从Firebase中删除的特定值。 DatabaseReference demo = mReference.child("demo").orderByValue().equalTo("John").getRef(); demo.addListenerForSingleValueEvent(new ValueEventListener()
fname:“约翰”
lname:“wick”
这里是我试图从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) {
}
});
但这将从数据库中删除所有值
问题
:如何删除该特定值???我必须为此做些什么
任何帮助都将不胜感激。您可以尝试:
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());
}
});
不要为SingleValueEvent使用
AddListener
尝试使用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);
}
});
嗨,请尝试使用此代码
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());
}
});
好的,感谢大家,经过大量的回答和询问修改后。。这就是我的工作原理
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) {
}
});
试试这个代码。希望这能对你有所帮助 谢谢
database.getReference().child(“组”).child(groupItem.getGroupkey()).child(“成员”).child(groupMember.getKey()).removeValue().addOnSuccessListener(新建OnSuccessListener()){
@凌驾
成功时公开作废(作废避免){
新CustomMessage(GroupDetailsActivity.this,“已成功删除”);
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
showlogD(“ERROR_MSG”,e.getMessage());
}
});
数据库结构:已尝试此操作,但不起作用<代码>dataSnapshot.getRef().removeValue()和
dataSnapshot.getRef().setValue(null)代码>两者都是一样的东西。。阅读firebase文档。。您是否尝试:mReference.child(“演示”).orderByChild(“fname”).equalTo(“John”)
谢谢您的回复,,。。但是什么也没发生@UttamPanchasara请检查我的答案现在我更新了!非常感谢。你的解决方案像魅力一样有效,也可以检查我的答案,这也是我的工作。谢谢。。对于你们的回答,我已经在你们的答案中找到了一些修改后的答案。看看我的解决方案。
database.getReference().child("Groups").child(groupItem.getGroupkey()).child("members").child(groupMember.getKey()).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
new CustomMessage(GroupDetailsActivity.this, "Successfully deleted");
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Customlog.showlogD("ERROR_MSG",e.getMessage());
}
});