如何删除Firebase中没有特定子项的子项?

时间:2018-06-24 13:57:50

标签: android firebase firebase-realtime-database

我想从数据库中的子“ UserRequests”中删除所有内容,但保留其特定的子“ DoNotRemove”:

databaseReference.child("UserRequests").removeValue();

我确实需要执行此操作,否则其他选择将是从“ UserRequests”中仅获取一个不是“ DoNotRemove”的孩子,执行我必须要做的,然后将其删除,或者从“ UserRequests”中仅获取一个孩子UserRequests”的子级为“昵称”(因为“ DoNotRemove”没有子级),请执行我必须做的事,然后将其删除。

http://oi65.tinypic.com/15xspxe.jpg

基本上,我必须从“ UserRequests”中删除所有子项,但子项“ DoNotRemove”除外,或者仅从“ UserRequests”中获取一个子项,而不是“ DoNotRemove”。

1 个答案:

答案 0 :(得分:0)

类似的事情应该起作用:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("UserRequests");
Query query = ref.orderByChild("Nickname").startAt(" "); // space it the first printable character

query.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
        dataSnapshot.getRef().removeValue();
    }
    ...

因此,这将获得UserRequests下具有属性Nickname的每个子节点。由于空格是第一个可打印字符,因此这将返回具有此属性的每个节点。它会跳过没有DoNotRemove属性的Nickname节点。