Android Firebase - 从列表中删除单个值

时间:2017-03-12 23:01:45

标签: android list firebase firebase-realtime-database

我有这个Firebase数据库(列表是由push()方法创建的):

enter image description here

我只想删除“地方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”?

2 个答案:

答案 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) {
    }
});
相关问题