【问题标题】:Firebase AfterSave function like Parse.comFirebase AfterSave 功能,例如 Parse.com
【发布时间】:2016-05-24 05:30:35
【问题描述】:

所以我使用 Parse.com AfterSave 云代码功能来保存与特定位置相关的最新帖子列表。这样做的原因是无需搜索和排序所有位置的整个帖子列表即可获取某个位置的最新帖子。

这在 Parse AfterSave 中做得很好,因为我不必担心客户端执行此命令,它在云中运行是有意义的。现在解析正在关闭,我决定迁移到 Firebase。 Firebase 中是否有等效功能,或者我的客户是否需要维护最新帖子的列表?

谢谢

原题重新解析Get latest record per field in Parse.com JS query

【问题讨论】:

    标签: parse-platform firebase angularfire parse-cloud-code


    【解决方案1】:

    目前无法在 Firebase 的服务器上运行您的代码。因此,您必须想出一个不太直接的 Cloud Code 映射到一个新的解决方案。在每个客户端上运行功能是一种选择,在廉价的“机器人”/服务器上运行它是另一种选择。

    我会找到一些以前讨论过的问题并将它们链接在这里:

    要记住的一点是,运行这样的服务器并不是您立即想到的“编写服务器”类型。其中大多数更像是一个“机器人”,它与 Firebase 交互的方式与您的客户端代码相同。在这种情况下,唯一的区别是它在您控制的环境中运行,因此它可以使用提升的凭据运行。

    【讨论】:

      【解决方案2】:

      几个想法;其中一个您已经提到“否”,但为了完整起见,想将其包括在内:

      all_messages
        message_0
          message: blah blah
          timestamp: the timestamp
        message_1
          message: blah blah
          timestamp: the timestamp
        message_2
          message: blah blah
          timestamp: the timestamp
      

      如果所有客户端都在观察 all_messages 节点,则任何时候添加新消息都会通知客户端,并且可以通过时间戳查询最后三个消息。非常简单的解决方案。

      另一个想法是拥有一个仅保留对最后三个消息的引用的节点,从而减少开销和排序。

      all_messages
        message_45
          message: blah blah
        message_50
          message: blah blah
        message_51
          message: blah blah
      
      last_three_messages
        last_message_0: message_45
        last_message_1: message_50
        last_message_2: message_51
      

      当客户端向 all_messages 节点写入消息时,在 last_three_messages 节点中写入对它的引用并将较旧的消息打乱。

      这样,客户端可以只观察 last_three_messages 节点。

      需要一点客户端逻辑来处理将最新消息推送到 last_message_0 插槽,然后将另一个消息向下移动,但只需要几行代码,开销最小。

      【讨论】:

      • 这本质上是我希望云代码而不是客户端做的事情
      • Firebase 不提供这种服务器端逻辑。然而,这是一个带宽非常低、代码最少的选项,可以轻松添加到客户端。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      相关资源
      最近更新 更多