首页 文章

Firebase AfterSave功能就像Parse.com一样

提问于
浏览
2

所以我使用Parse.com AfterSave Cloud 代码功能来保存与特定位置相关的最新帖子的列表 . 这样做的原因是获取位置的最新帖子,而无需搜索和订购所有位置的完整帖子列表 .

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

谢谢

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

2 回答

  • 2

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

    我会在之前找到一些问题,并将它们链接到这里:

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

  • 1

    几个想法;其中一个你已经提到过“不”但想要将其包含在内以便完整:

    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插槽然后将另一个消息混乱,但它只需要几行代码而且开销最小 .

相关问题