如果我想删除基于Rooms
的{{1}}节点,我知道该怎么做但我怎么能删除message
节点,当我只知道Room1
时?当我使用此代码时,没有任何反应。
userName
答案 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")