【问题标题】:Can you await firebase cloud auth.user().OnCreate function?您可以等待 firebase cloud auth.user().OnCreate 函数吗?
【发布时间】:2020-04-29 15:43:55
【问题描述】:

任何时候用户注册,云功能都会在实时数据库中创建一个新的用户对象。问题是,我需要在 firebase.auth().signIn().then() 之后立即访问用户数据,但 onCreate 调用早于 then() 语句。

有什么方法可以等待 firebase.auth().signIn() 中的 auth.user().onCreate 方法吗?

【问题讨论】:

  • @RenaudTarnec 这正是我想要的。
  • 你能检查我的答案吗?用户注册后,它将在实时数据库中创建数据,并使用您应用程序中的另一个 onCreate 来获取数据。请发布您的应用代码。注册后强制用户注销,这将为您的应用获取数据留出时间。

标签: firebase firebase-realtime-database google-cloud-functions


【解决方案1】:

不,这是不可能的。 Cloud Function 的触发事件只能有一个,并且不能更改。

如果您有一个在实时数据库中创建一些数据的函数,并且您希望客户端应用程序等待该数据被创建,那么您需要做的就是在预期数据的位置添加一个侦听器。例如,如果使用新创建用户的 UID(例如,/user/{uid})创建数据,您所要做的就是以与函数相同的方式构建该数据的路径,添加侦听器,并在侦听器触发后继续您的应用程序的 UI。您当然可以收听尚不存在的数据。

它与我在this post 中写的类似,只是它使用 Firestore 而不是实时数据库,但过程是相同的。

【讨论】:

  • 看起来他想在生成新的 Auth 时运行一些东西?
  • @Dharmaraj 不,我认为他们希望客户端在函数创建后立即读取函数生成的数据库数据。
  • 让我们看看。至少使用functions.auth.user().onCreate 将防止他的问题。此后,他可以在该特定路径上使用onCreate() 立即获取数据。
【解决方案2】:

是的,添加这是您的 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() 来获取数据。但请记住,这会导致您再次调用函数。

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 2021-12-29
    • 2021-09-23
    • 2019-09-17
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    相关资源
    最近更新 更多