【发布时间】:2016-12-28 16:07:12
【问题描述】:
我想从 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 - 使用未指定的索引。考虑在您的安全和 Firebase 数据库规则中添加 '".indexOn": "Chairs"' 以获得更好的性能
此后,该节点不会从 Firebase 中删除。为什么无法删除节点?
【问题讨论】:
-
你的第二个代码很好,它应该已经可以工作了。并且 logcat 只显示警告,firebase sdk 建议您将该索引选项添加到 Firebase 数据库规则。如果您不添加该规则,您的代码将起作用。我已经使用相同的数据库尝试了您的代码,并且按预期删除了 Room2。
标签: android firebase firebase-realtime-database