我正在使用Firebase后端构建Next.JS应用程序。当用户注册时,我使用auth触发器运行一个函数,该函数创建Firestore文档并将一些数据设置到其中。云函数需要一些时间才能完成。我想在此云函数运行时显示用户加载屏幕,这是我的create user函数:
// **1** CREATE USER
const createUser = (email, password) => {
return createUserWithEmailAndPassword(auth, email, password);
};
我照此更新文档
// **5** FUNCTION TO RUN WHEN A NEW USER IS CREATED
exports.newCustomer = functions.auth.user().onCreate((user) => {
const uid = user.uid;
const userData = {
//...someDataSource
};
// UPDATE CUSTOMER DOCUMENT
return setCustomer(counting, uid) //Firestore updater function
});
// **5**
我如何才能做到这一点。
谢谢。
1条答案
按热度按时间gcxthw6b1#
你只能使用一个单独的服务来向你的用户推送数据。
onCreate()
函数是一个异步运行的后台函数,与你的前端完全解耦。你想向你的用户呈现的任何东西都需要通过你编写的自定义代码来完成,这些代码通过应用连接到的一些服务推送数据,例如Firestore。我不确定这样做的可行性,因为你的问题似乎是即使Firestore文档写入也需要太长时间,但让我们假设你正在做很多复杂的工作,这些文档确实需要很长时间才能完成,并且你的速度问题与Firestore延迟无关,而是来自其他进程的延迟。
如果是这样的话,那么一个例子就是:
1.客户端创建不需要身份验证的Firestore集合的侦听器
1.函数将触发
1.它在Firestore集合中创建一个新文档,其中包含有关函数进度的数据
1.客户机侦听器接收文档创建,并且可以更新UI以显示它已经启动
1.随着函数的继续,它会更新文档以显示进度
1.客户机侦听器接收到文档更新,UI可以更新以显示它已经进行
1.重复5-6次
这种方法有局限性,因为Firestore对单个文档的更新有限制。替代方案可能是Firebase Realtime DB或其他类似的服务。