我有这个Firebase数据库(列表是由push()
方法创建的):
我只想删除“地方1”。
我尝试了以下代码,但它删除了整个“餐馆”节点...
databaseReference.child("Restaurants").orderByValue().equalTo("Place 1")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getRef().setValue(null);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
如何仅删除“地方1”?
答案 0 :(得分:0)
您使用databaseReference.child("Restaurant")
作为基准参考。请注意orderByValue()
不会更改引用,只会过滤值。简而言之,dataSnapshot
生成的onDataChange()
对象始终指向您的参考。
你应该这样做:
... onDataChange(DataSnapshot dataSnapshot) {
// dataSnapshot object will point at "Restaurant"
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
// snapshot object is every child of "Restaurant" that match the filter
snapshot.getRef().setValue(null);
}
}
希望这有帮助。
答案 1 :(得分:0)
尝试这个:
databaseReference.child("Restaurants").orderByValue().equalTo("Place 1")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getRef().removeValue(); //used this
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});