从Firebase Cloud Function响应后,我可以执行其他操作吗?

时间:2019-06-05 14:32:18

标签: firebase express google-cloud-firestore google-cloud-functions

我目前正在寻求接受请求(使用Express / Firebase Cloud Functions)并进行一些计算/发出一些请求,发送响应,然后在更新我的数据库或进行一些额外的计算之前响应用户。

用例示例:有时,一个用户将关注另一个用户。这意味着我想对整个数据库进行更新,以便以后将数据放置在正确的位置。我不需要用户等待我这样做,在服务器知道用户希望关注他们之后,我可以做很长时间。

我可以接收用户请求,执行服务器操作,响应用户,然后继续使用我的云功能吗?我已经看过客栈中某个函数在响应处终止的地方,但不清楚您如何处理此问题,或者它是否仅在特定响应处终止。

2 个答案:

答案 0 :(得分:1)

无法实现解释的方法,我的意思是,从函数返回后,该过程就完成了。

但是,您可以实现多种模式,只要与triggers一起玩就可以了。

您可以将状态保存在Firestore集合上,并触发后台函数来获取此状态并执行所需的任何操作。

如果您不想将其保存在收藏夹中,则也可以使用PubSub

这应该为您提供一个很好的起点,以研究什么是针对您的用例的最佳解决方案。

希望这会有所帮助!

答案 1 :(得分:0)

Firebase有两种云功能:您可以直接调用的功能(HTTPS Callable functionsHTTPS "simple" functionsscheduled functions),以及一种响应由某些Firebase服务或Google Cloud功能(例如FirestoreAuthentication eventsCloud Storage(请参见https://firebase.google.com/docs/functions)生成的事件完整列表)

通常,当您要在用户启动云功能后向其发送响应时,可以选择HTTPS可调用功能或HTTPS“简单”功能。但这不是唯一的方法:您可以通过后台触发的Cloud Function很好地向用户发送反馈,主要是通过在Firestore(或Realtime数据库)中将一些内容写入前端正在侦听的位置

通过第二种方法,您可以很好地“响应用户,然后继续使用[the]云功能”。在使用可调用的Cloud Function时,当您将响应发送回用户时,该功能将终止。

因此,让我们详细介绍一下Firestore:

  1. 例如通过从前端写入Firestore文档/集合来触发后台功能
  2. 同时,从前端将侦听器设置为特定文档(不一定是与上述文档相同的文档)。有关设置监听器的信息,请参见here
  3. “云功能”开始做一些工作,并在一瞬间写入Firestore中的此特定文档
  4. 在前端,通过侦听器通知用户写信
  5. 在后台,Cloud Function可以继续其其他任务。

关键是您必须通过链接承诺来正确链接Cloud Function的所有异步任务。