在创建新用户后,我尝试使用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数据库中。有没有更好的方法来实现此功能?
答案 0 :(得分:1)
您不能使用this.createNewUserData
调用另一个函数。因此,您需要从createNewUserData(firstname,lastname,email);
的{{1}}块调用then
。
当前,它没有将任何用户数据添加到Firestore数据库中的原因是未调用函数createUserWithEmailAndPassword
。因此,一旦调用了该函数,您至少会调用firestore来添加该用户。