观察Firebase的特定数据集



我使用Firebase来实现iOS匿名聊天应用程序。

我的应用程序有一个聊天室列表,点击该聊天室将加入一个群聊点赞Facebook信使。数据库的结构看起来像

rooms
|- AAA
|- messages
|- "aaaaa"
|- "bbbbb"
|- "ccccc"
|- BBB
|- messages
|- "ddddd"
|- "eeeee"
|- CCC
|- messages
|- "fffff"
|- "ggggg"
...

如果用户加入房间,例如AAABBB。应用程序将把AAABBB存储在本地存储器中。如何观察添加到AAABBB的新消息,而不观察CCC

我读了Firebase的文件。我可能有一些方法可以做到这一点。

  1. 观察整个rooms节点,并在应用程序中过滤AAABBB。但我认为如果rooms太多,会导致性能问题。数据大小太大了
  2. 为CCD_ 12和CCD_。它可能会解决我的问题,但如果我的用户加入了太多的rooms。观察许多节点似乎没有意义
  3. 设置一个规则来控制哪些rooms可以同步。但我必须记录用户进入房间的情况。我必须管理匿名用户和聊天的关系

有什么更好的性能可以解决我的问题吗?

可能喜欢

['AAA', 'BBB'].observe(.childAdded, {
// do something
})

或者欢迎任何建议!

谢谢

Firebase数据库观察员总是检索整个节点。除了查询的能力之外,没有办法检索部分节点。但在您的情况下,您不能使用查询,因为您不能在查询中执行OR,并且聊天室可能不在一个范围内。

如果您试图确保用户所在的房间在脱机时被缓存,则可以在每个房间上调用keepSynced(true)。这将实质上添加一个空侦听器,以确保(磁盘)缓存保持最新。

如果你想在sone上显示多个聊天室,你需要使用多个观察员:每个房间一个。

最新更新