【问题标题】:Observe particular data sets of Firebase观察 Firebase 的特定数据集
【发布时间】:2017-10-09 00:34:06
【问题描述】:

我使用 Firebase 实现了一个 iOS 匿名聊天应用。

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

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

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

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

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

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

也许喜欢

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

或欢迎任何建议!

谢谢

【问题讨论】:

    标签: swift firebase firebase-realtime-database


    【解决方案1】:

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

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

    如果您想同时显示多个聊天室,则需要为此使用多个观察者:每个房间一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      相关资源
      最近更新 更多