如果现有多个Android子项,如何从Firebase数据库中删除记录?

时间:2017-01-18 22:51:47

标签: android firebase firebase-realtime-database

我有一个相对简单的Firebase数据库,如下所示: enter image description here


如果我想删除基于Rooms的{​​{1}}节点,我知道该怎么做但我怎么能删除message节点,当我只知道Room1时?当我使用此代码时,没有任何反应。

userName

2 个答案:

答案 0 :(得分:0)

我认为最好使用getID()方法返回ID并根据该方法进行删除。

答案 1 :(得分:0)

如果重新构建数据库不是一个选项,那么最简单的方法是遍历Rooms节点。

String username = "Alex";
FirebaseDatabase.getInstance().getReference().child("Rooms").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot room : dataSnapshot.getChildren()) {
            boolean containUsername = false;
            for (DataSnapshot roomChild : room.getChildren()) {
                if (roomChild.child("userModel/userName").getValue(String.class).equals(username)) {
                    containUsername = true;
                    break;
                }
            }

            if (containUsername)
                FirebaseDatabase.getInstance().getReference("Rooms/" + room.getKey()).removeValue();
        }
    }
    ...
});

注意:我没有检查是否可以使用roomChild.child("userModel/userName")。如果它产生错误,请使用roomChild.child("userModel").child("userName")

进行更改