我可以仅使用根引用删除带有句柄的 Firebase 观察者吗?

Posted

技术标签:

【中文标题】我可以仅使用根引用删除带有句柄的 Firebase 观察者吗?【英文标题】:Can I remove Firebase observer with handle, using just the root reference? 【发布时间】:2017-03-20 22:17:39 【问题描述】:

我在一个自定义的“数据库”类中拥有所有观察者,该类具有一些观察引用并通过闭包传递结果的函数和协议。因此,我的某些视图控制器中不需要 Firebase 引用,只需要该类的一个实例。 所以我的问题是,删除带有句柄的观察者是否需要特定的参考?

或者我可以这样做吗 FIRDatabase.database().reference().removeObserver(withHandle: handle) (可能有一些特定用户的路径),删除观察者?

【问题讨论】:

【参考方案1】:

很遗憾,您需要在添加它的同一节点上将其删除。请记住,您可以在多个节点位置添加处理程序,甚至每个位置不止一次,所以这是有道理的。

请注意,您可以调用 removeAllObservers 来删除任何引用,而无需使用句柄,但同样,这只会影响特定路径,不会递归应用于子路径。

【讨论】:

那么这是否意味着如果我在多个地方观察相同的引用,它也会删除 all 观察者?还是参考+处理是一件独特的事情?这对我来说并不重要,我一次只想有一个观察者,我只是好奇:) 每次你注册一个观察者,你都会得到一个唯一的句柄。因此,您应该使用该位置的侦听器的正确句柄来调用每个位置。

以上是关于我可以仅使用根引用删除带有句柄的 Firebase 观察者吗?的主要内容,如果未能解决你的问题,请参考以下文章

句柄而不是指针的引用计数

Firebase 仅用于推送通知

Firebase 和索引/搜索

使用打开的句柄删除文件

带有 firebase nuxt 模块的 Firebase 存储在删除文件后无法读取未定义的属性“删除”

如何在反应项目和 Firebase 中使用带有 axios 的删除请求?