为什么在移除父级时不会触发?需要一个firebaser来解释它为什么以这种方式实现。这是一个例子:
ref:ref('/users/{user_id}')
触发器触发:firebase database:set {'/users/123': someval}
(伪代码)
触发器触发:`firebase database:remove'/ users / 123'
触发不会触发:firebase database:remove '/users'
我希望最后一个父删除语句触发触发器,因为它正在删除子数据。如果该节点中有两个用户,我希望它会触发两次。我知道我可以在/users
上添加另一个触发器并循环遍历孩子。但是你们为什么用这种方式实现触发器呢?只是好奇。仍然认为功能很棒BTW。感谢。
答案 0 :(得分:0)
有几个可用的事件表现出相同的行为......在Swift中我们有
.childAdded
.childChanged
.childRemoved
.value
如果您注意到事件的名称以.child开头,并且您是正确的,则只会触发添加,更改或删除的子节点。实时数据库的行为类似于云触发器。
然而,.value(在父节点_上是你正在寻找的那个,因为它将在创建或删除父节点时触发。当然,当删除时,快照(或事件数据)将为零,但它实际上确实很火。
作为测试,这里有一些Swift代码可以监视名为... parent_node的父节点。
let nodeRef = self.rootRef.child("parent_node")
nodeRef.observe(.value, with: { snapshot in
print(snapshot)
})
当parent_node不存在并添加时,事件就像触发器一样触发。在这个例子中,我添加了一个子节点名称= larry。这是触发和打印快照事件内容的事件
Snap (parent_node) {
name = larry;
}
然后我删除了parent_node,它也像触发器一样触发,因为它是我们感兴趣的父节点,这就是结果
Snap (parent_node) <null>
所以底线是儿童观察者只为儿童事件开火,但是父母价值观察者会为所有事情开火。
答案 1 :(得分:0)
Yea看起来像是Cloud Functions for Firebase onWrite trigger not called when parent is deleted
的副本我在搜索时讨厌它,当别人回答同一个问题时仍然无法找到它。
如果有任何firebaser读取此内容,那么查看“适用于Firebase的Cloud Functions”的标记仍然会有帮助