query.ref.removeValue删除整个子节点而不仅仅是一个节点

时间:2016-08-08 18:12:07

标签: swift firebase firebase-realtime-database

我试图通过查询然后调用query.ref.removeValue()从我的数据库中删除一个特定节点,但每次运行这段代码时,它会删除整个子节点,而不仅仅是节点。我的代码看起来像这样......

let query = (ref?.child("Groups").child("Martins").child("Messages").queryEqualToValue(selectedValue))

query!.ref.removeValue()

我的数据库看起来像这样......

It starts with the child named "Groups" then another which is the name of the group then a child named "Messages" and inside I want to be able to individuall delete the nodes instead of deleting the whole Messages child.

感谢所有的帮助,我真的很感激。

1 个答案:

答案 0 :(得分:0)

查询引用指向定义查询的位置,而不是指向它匹配的元素。因此query!.ref.removeValue()将删除整个位置。

要删除查询匹配的单个项目,您需要将一个侦听器附加到查询并迭代子项:

let query = ref?.child("Groups").child("Martins").child("Messages")
                .queryOrderedByKey("Item").queryEqualToValue(selectedValue)

query.observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
  snapshot.ref.removeValue()
})