经过Firebase身份验证

时间:2019-09-27 08:08:59

标签: javascript firebase google-cloud-firestore firebase-authentication

在创建新用户后,我尝试使用Firestore Auth后将用户数据添加到Cloud Firestore中。

$("#signup_btn").click(function () {
    var firstname = document.getElementById("firstname").value;
    var lastname = document.getElementById("lastname").value;
    var email = document.getElementById("email_signup").value;
    var password = document.getElementById("password_signup").value;

    firebase.auth().createUserWithEmailAndPassword(email, password).then(cred=>{
        this.createNewUserData(firstname,lastname,email);
    }).catch(error =>{
        var user = firebase.auth().currentUser;

        user.delete();
        var errorMessage = error.message;

        window.alert("Error: "+ errorMessage);
    });
});


function createNewUserData(firstname, lastname, email){
    db.collection("users").add({
        firstname: firstname,
        lastname: lastname,
        email: email
    })
        .then(function (docRef) {
            console.log("Document written with ID: ", docRef.id);
        })
        .catch(function (error) {
            console.error("Error adding document: ", error);
        });
}

我实现的以上代码能够将用户数据添加到firebase Auth中,但是不会将任何数据添加到firestore数据库中。有没有更好的方法来实现此功能?

1 个答案:

答案 0 :(得分:1)

您不能使用this.createNewUserData调用另一个函数。因此,您需要从createNewUserData(firstname,lastname,email);的{​​{1}}块调用then

当前,它没有将任何用户数据添加到Firestore数据库中的原因是未调用函数createUserWithEmailAndPassword。因此,一旦调用了该函数,您至少会调用firestore来添加该用户。