【问题标题】:Firebase cloud functions - write to database on create userFirebase 云功能 - 在创建用户时写入数据库
【发布时间】:2021-07-23 05:37:03
【问题描述】:

我想在每次注册新用户时写入数据库。这是我的代码:

    const functions = require('firebase-functions');
    exports.newUserToDatabaseTest = functions.auth.user().onCreate((user) => {
    var current = new Date().toString();
    firebase.database().ref('users/' + firebase.auth().currentUser.uid).set({
        email: user.email,
        creationDate: current
        })
  });

它部署正确,但是在新用户在我的 React Native 应用程序中注册后什么都没有发生。 我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    在编写 Firebase Cloud Functions 时,请务必注意,如果您运行异步代码,您需要“告诉”该函数等待。否则它将在您的代码执行之前停止。为此,我们会将您的 set 返回到数据库。

    auth 触发器还为您提供user,因此您可以使用它来获取用户 uid。

    firebase.auth().currentUser.uid 在云功能中不起作用。

    试着把你的代码改成这样:

      const functions = require('firebase-functions');
    
      const admin = require('firebase-admin');
      admin.initializeApp();
    
        exports.newUserToDatabaseTest = functions.auth.user().onCreate((user) => {
        var current = new Date().toString();
        return admin.database().ref('users/' + user.uid).set({
            email: user.email,
            creationDate: current
            })
      });
    

    【讨论】:

    • 您需要在 Cloud Function 中使用 Admin SDK。初始化可以进行 RTDB 更改的管理应用程序实例。 (const admin = require('firebase-admin'); admin.initializeApp();) 然后做admin.database().ref('...')...
    猜你喜欢
    • 2018-06-04
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 2017-11-12
    • 1970-01-01
    • 2018-12-07
    相关资源
    最近更新 更多