我如何从 Firebase 传达/触发子任务?

How do I communicate / trigger a Webtask from Firebas?

在一篇关于 'Firebase Authentication with the Firebase 3.0 SDK and Auth0 Integration' 的有趣 blogpost 中,指出:

You can even have Firebase communicate with Webtask!

现在我可以想象 (web)client 触发 Firebase 操作,随后触发 Webtask,但反之则不然。还是我遗漏了什么?

Firebase can run as a serverless app, but it can also run on the server. You can even have Firebase communicate with Webtask! (sic!)

我认为该段的措辞具有误导性,也许它只是在最后一刻添加以激发兴趣。您可以让网络任务与 Firebase 通信,而不是相反。您的服务器上也不 "run Firebase"。

TL;DR: 客户端应用程序可以使用 HTTP 请求调用 Web 任务,并且该任务可以 read/write 数据库,但不能以任何其他顺序。


这是截至 2016 年 11 月的快速而粗略的现实检查:

  • 实时数据库本身不会为您提供执行代码的方式。这包括响应数据库更改和用户请求,处理扇入和扇出操作等。也不支持 webhooks。
  • 这意味着您必须在自定义服务器上为此类逻辑提供自己的执行环境,或者您可以尝试尽可能多地塞入客户端代码。 这本身就是一个非常详尽的话题。
  • 网络任务是响应 HTTP 请求的短期函数。它们的生命周期总是从一个请求开始,所以它们不适合持续观察数据库的变化。但是它们对于处理来自您的客户端应用程序的请求是完全有效的。
  • 由于您可以为网络任务存储 "secrets",因此您可以在 admin 访问级别上验证任务。这使您可以验证客户端令牌——应随请求一起发送——;执行复杂的授权和验证,并执行您不信任客户端的 RTDB 写入操作。 或者安全地触发外部服务。 可能性几乎是无限的。