类似 Parse.com 的 Firebase AfterSave 功能

Firebase AfterSave function like Parse.com

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

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

谢谢

原题重新解析

目前无法运行 Firebase 服务器上的代码。因此,您将不得不想出一个不太直接的 Cloud Code 映射到新解决方案的方法。 运行 每个客户端上的功能是一个选项,运行以便宜的方式安装它 "bot"/服务器是另一个选项。

我会在之前讨论过的地方找到一些问题,link 在这里:

  • (最近的问题涉及使用 nodejs 服务器)
  • How would I run server-side code in Firebase?
  • How do I use Firebase to handle automatic server-side calculations?
  • Firebase and indexing/search
  • (引出另外四个问题)

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

几个想法;其中一个您已经提到为 'no' 但为了完整起见想要包括它:

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 插槽然后将另一个向下移动的客户端逻辑需要一些客户端逻辑,但这只需要几行代码,开销最小。