Firebase - 将其他用户数据添加到单独的数据库中

red*_* 87 7 javascript firebase firebase-realtime-database

我是Firebase的新用户,正在使用电子邮件/密码登录方式.我的方法工作正常但是在我的注册表单上我还有其他字段要输入数据库.我对电子邮件/密码注册方法的理解是,任何其他字段都必须单独存储,以便在用户注册时如何存储电子邮件/密码验证.

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

在此输入图像描述

这是我正在调用(在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")
           }
        });

    }
Run Code Online (Sandbox Code Playgroud)

跟着我在这里找到的另一个例子:

在Firebase用户表上添加额外详细信息

但不知道我在路上哪里出错了.关于此的文档相当薄弱,但没有帮助!

Vla*_*yan 8

  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
    })
    
    Run Code Online (Sandbox Code Playgroud)

  • 是的,这绝对是正确的方法人:).我已经在生产中使用这种方法. (2认同)