javascript - Firebase - 将额外的用户数据添加到单独的数据库

标签 javascript firebase firebase-realtime-database

我是 Firebase 的新手,正在使用电子邮件/密码登录方法。我的方法工作正常但是在我的注册表单上我有其他字段我想输入到数据库中。我对电子邮件/密码注册方法的理解是,任何其他字段都必须与用户注册时电子邮件/密码身份验证的存储方式分开存储。

我在我的数据库中创建了一个子部分来存储称为用户的其他用户详细信息。这是它在 Firebase 中的样子:

enter image description here

这是我调用(在 React 中)创建新用户的函数:

    signUp(e) {
        e.preventDefault();
        var firstName = $('.signup-first-name').val();
        var lastName = $('.signup-last-name').val();
        var userName = $('.signup-user-name').val();
        var password = $('.signup-user-password').val();
        var email = $('.signup-email').val();   

        var auth = firebase.auth();

        const promise = auth.createUserWithEmailAndPassword(email,password).then(function(user) {

        var user = firebase.auth().currentUser;
        user.updateProfile({
            displayName: userName,
        }).then(function() {
        // Update successful.

        // new db code here
        var ref = new firebase("https://music-app-7a4d3.firebaseio.com");

        ref.onAuth(function(authData) {
            ref.child("users").child(authData.uid).set({
                firstName: firstName,
                lastName: lastName
            })
        })
        // end new db code here

    }, function(error) {
        // An error happened.
    });  

}, function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    if (errorCode == 'auth/weak-password') {
        alert('The password is too weak.');
    } else {
        console.error(error);
    }
});

        promise.catch(e => console.log(e.message));

        firebase.auth().onAuthStateChanged(firebaseUser => {
           if(firebaseUser) {
               console.log(firebaseUser)
           } else {
               console.log("not logged in")
           }
        });

    }

按照我在此处找到的另一个示例进行操作:

Add Extra Details on Firebase User Table

但不确定我在这个过程中哪里出了问题。这方面的文档相当薄弱,没有帮助!

最佳答案

  1. 旧版本已完成 firebase 对象的初始化,请参阅 https://firebase.google.com/docs/web/setup ,它使用 firebase.initializeApp(config) 而不是 new firebase()

  2. 使用此代码使用用户的附加字段更新您的数据库

    firebase.database().ref('users/' + user.uid).set({
        firstName: firstName,
        lastName: lastName
    })
    

关于javascript - Firebase - 将额外的用户数据添加到单独的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40286442/

相关文章:

javascript - 将 JSON 转换为 JavaScript 对象数组

javascript - 为什么我在以下递归函数中得到 "X is not a function"?

Firebase 托管 : Preventing unauthorized access to URL

android - 监控用户在应用程序不同部分花费的时间

java - 在 firebase android 中拯救一个 parent 下的许多 child

javascript - 如何根据API数据从2个相关选项向数据库输入值

javascript - 无法使用 Angular 向本地 JSON 文件发出 $http.get 请求

ios - Swift Firebase 链接两个节点

javascript - 使用 firebase privateKey 作为 Heroku 配置变量来逃避问题

firebase - 是否可以在一个项目中创建多个 Firebase 实时数据库实例(>20)