只要用户注册,云函数就会在实时数据库中创建一个新的用户对象。问题是,我需要在firebase.auth().signIn().then()之后马上访问用户数据,但onCreate调用的时间比then()语句早。
有没有办法在firebase.auth().signIn()中等待auth.user().onCreate方法?
不,这是不可能的。 一个云函数只能有一个触发事件,而且不能改变。
如果你有一个在Realtime Database中创建一些数据的函数,并且你想让客户端应用等待这些数据被创建,你需要做的就是在预期数据的位置添加一个监听器。 例如,如果正在使用新创建的用户的UID创建数据(比如。/user/{uid}
),你所要做的就是以函数的方式构建该数据的路径,添加监听器,并在监听器触发后继续你的应用程序的UI。 你当然可以监听那些还不存在的数据。
这和我在这里写的类似于 此职位除了使用Firestore而不是Realtime Database,但过程是一样的。
是的,把这个添加到你的Firebase Cloud Functions中。
export const onNewUserAuth = functions.auth.user().onCreate((user) => {
//To get user Auth Credentials add below code:
const newUserUID = user.uid
const newUserEmail = user.email
//Add Data to Realtime Database this way
return admin.database().ref(<your-path-here>).update({ "UID": newUserUID })
})
现在,如果你想在用户创建后立即获得数据,并且信息存储在数据库中, 使用另一个 onCreate()
来获取数据。但请记住,这将使你付出另一个函数调用的代价。