【发布时间】:2017-05-15 09:25:18
【问题描述】:
假设用户有一个节点,其中存储了他们所有收藏帖子的 ID (/users/$uid/favourites/$postid)。因此,在我的 ViewController 中,我观察 /users/$uid/favourites/ 节点,这样我就可以获得所有最喜欢的 postid,然后迭代地获取 post 对象。
如果用户没有收藏夹,则“收藏夹”节点尚不存在。我发现如果我在这种状态下附加一个 .value 事件观察者,它永远不会在用户稍后收藏帖子时触发(即,当“收藏夹”参考变得存在时。如果我使用 .childAdded 观察者,则不会发生此问题.
这是一个错误还是特定的设计功能?另外,是否有解决方法...当然,不需要我使用 .childAdded 观察者。谢谢。
【问题讨论】:
-
Firebase 值观察器立即使用该位置的当前值触发。如果没有值,它们会立即以空快照触发。如果您不是这种情况,请分享minimal code that reproduces the behavior。
-
@Frank,我解决了这个问题,这是一些奇怪的安全规则的副作用,它阻止了对节点的观察。我花了很多时间在客户端解决这个问题,甚至没有考虑到这一点。为了显示“重现行为的最小代码”,我用最小的节点结构分离了一个干净的 firebase 项目,并且没有出现问题。然后“区分”这两个项目,发现唯一的区别是安全规则。我更改了当前项目的规则,现在 .value 事件监听现在可以按预期工作了。
-
查看.... 创建 MCVE 通常可以帮助您找到自己的问题。干得好!
标签: swift firebase firebase-realtime-database