我想从Firebase数据库中删除Room2
节点。我有这个数据库结构:
db-24f7f
|
- Hotel
|
-Room1
|
beds:"2"
Chairs: "6"
-Room2
|
beds:"3"
Chairs: "8"
我试过
database = FirebaseDatabase.getInstance();
myRef = database.getReference();
database.getReference("Hotel").orderByChild("Chairs").equalTo("8").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getRef().setValue(null);
}
删除整个数据库。然后我尝试了
database = FirebaseDatabase.getInstance();
myRef = database.getReference();
database.getReference("Hotel").orderByChild("Chairs").equalTo("8").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds:dataSnapshot.getChildren()){
ds.getRef().removeValue();
}
}
找到这个:
12-28 12:31:21.813 22950-22950 / PKGName_o E / ViewRootImpl:sendUserActionEvent()mView == null 12-28 12:31:21.813 22950-22950 / PKGName_o E / ViewRootImpl:sendUserActionEvent()mView == null W / PersistentConnection:pc_0 - 使用未指定的索引。考虑添加'" .indexOn":"主席"'在酒店使用您的安全和Firebase数据库规则以获得更好的性能
此后,该节点不会从Firebase中删除。为什么它无法删除节点?
答案 0 :(得分:1)
在房间节点下添加房间密钥。
db-24f7f
|
- Hotel
|
-Room1
|
beds:"2"
roomKey: "Room1"
Chairs: "6"
-Room2
|
beds:"3"
roomKey: "Room2"
Chairs: "8"
现在参考' Hotel'。
DatabaseReference hotelRef = myRef.child("Hotel");
如果您只想删除Room2,请将Room2的值设置为null
-
hotelRef.child("Room2").setValue(null);
如果你想删除所有带8把椅子的房间,那么 -
hotelRef.orderByChild("Chairs").equalTo("8").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds:dataSnapshot.getChildren()){
String roomKey = (String) ds.child(roomKey).getValue();
hotelRef.child(roomKey).setValue(null);
}
}