我目前正在寻求接受请求(使用Express / Firebase Cloud Functions)并进行一些计算/发出一些请求,发送响应,然后在更新我的数据库或进行一些额外的计算之前响应用户。
用例示例:有时,一个用户将关注另一个用户。这意味着我想对整个数据库进行更新,以便以后将数据放置在正确的位置。我不需要用户等待我这样做,在服务器知道用户希望关注他们之后,我可以做很长时间。
我可以接收用户请求,执行服务器操作,响应用户,然后继续使用我的云功能吗?我已经看过客栈中某个函数在响应处终止的地方,但不清楚您如何处理此问题,或者它是否仅在特定响应处终止。
答案 0 :(得分:1)
无法实现解释的方法,我的意思是,从函数返回后,该过程就完成了。
但是,您可以实现多种模式,只要与triggers一起玩就可以了。
您可以将状态保存在Firestore集合上,并触发后台函数来获取此状态并执行所需的任何操作。
如果您不想将其保存在收藏夹中,则也可以使用PubSub。
这应该为您提供一个很好的起点,以研究什么是针对您的用例的最佳解决方案。
希望这会有所帮助!
答案 1 :(得分:0)
Firebase有两种云功能:您可以直接调用的功能(HTTPS Callable functions,HTTPS "simple" functions和scheduled functions),以及一种响应由某些Firebase服务或Google Cloud功能(例如Firestore,Authentication events或Cloud Storage(请参见https://firebase.google.com/docs/functions)生成的事件完整列表)
通常,当您要在用户启动云功能后向其发送响应时,可以选择HTTPS可调用功能或HTTPS“简单”功能。但这不是唯一的方法:您可以通过后台触发的Cloud Function很好地向用户发送反馈,主要是通过在Firestore(或Realtime数据库)中将一些内容写入前端正在侦听的位置
通过第二种方法,您可以很好地“响应用户,然后继续使用[the]云功能”。在使用可调用的Cloud Function时,当您将响应发送回用户时,该功能将终止。
因此,让我们详细介绍一下Firestore:
关键是您必须通过链接承诺来正确链接Cloud Function的所有异步任务。