Android - Firebase:删除所有具有特定ID

时间:2017-11-05 21:57:19

标签: android firebase firebase-realtime-database

有人可以帮助我,但我无法让它发挥作用。

数据库结构如下所示:

-Abbos
     1509917361
         ELtRM6aTs9XYkMmdrDZ8gRxpgec2
             id: "ELtRM6aTs9XYkMmdrDZ8gRxpgec2"
             sortorder: -1509917361
         FLARM6aTs9XYkMmdrDZ8gRxpgeh4
             id: "FLARM6aTs9XYkMmdrDZ8gRxpgeh4"
             sortorder: -1509917361
     1509917780
         ELtRM6aTs9XYkMmdrDZ8gRxpgec2
             id: "ELtRM6aTs9XYkMmdrDZ8gRxpgec2"
             sortorder: -1509917780

现在我要删除所有条目,例如id“ELtRM6aTs9XYkMmdrDZ8gRxpgec2” 但我的代码不起作用。

Query queryRef = mUserAbosDB.child("Abbos").orderByChild("id").equalTo(current_user_id);

                queryRef.addChildEventListener(new ChildEventListener() {
                    @Override
                    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                        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) {

                    }
                });

提前致谢

2 个答案:

答案 0 :(得分:1)

使用此 -

    DatabaseReference drTest = FirebaseDatabase.getInstance().getReference();

    drTest.child("Abbos").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            for(DataSnapshot dataSnapshot:snapshot.getChildren()) {
                if(dataSnapshot.hasChild(id)){
                    dataSnapshot.getRef().setValue(null);
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.w("TAG: ", databaseError.getMessage());
        }
    });

答案 1 :(得分:0)

我明白了:)

 DatabaseReference drTest = FirebaseDatabase.getInstance().getReference();

                drTest.child("Abbos").addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        for(DataSnapshot areaSnapshot: dataSnapshot.getChildren()) {

                               areaSnapshot.child(current_user_id).getRef().setValue(null);

                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });

谢谢Arif Khan