我正在开发一个小型Web应用程序,但遇到了我似乎无法克服的障碍。我可以注册一个新帐户,但是我想在注册后立即将其他数据保存到数据库中。
这就是我有信心可以正常工作的。
$("#user-sign-up-button").click(function(){
var firstName = $("#new-user-first-name").val();
var secondName = $("#new-user-surname").val();
var charity = $("#new-user-charity-account").val();
var userEmail = $("#new-user-email").val();
var userPassword = $("#new-user-password").val();
var secondPassword = $("#new-user-repeated").val();
firebase.auth().createUserWithEmailAndPassword(userEmail, userPassword)
.catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
});
现在有关将其他变量保存到数据库的问题,我已经在createuserWithEmailAndPassword的.then部分中尝试了以下两种方法。
.then(
function(user){
var root = firebase.database().ref();
var uid = user.uid;
alert(uid);
var postData = { firstName: first_name,
secondName: second_name,
email: user_email,
isCharity: charity };
root.child("users").child(uid).set(postData);
}
function writeUserData(first_name, second_name, charity, user_email) {
firebase.database().ref('users/' + user.uid).set({
firstName: first_name,
secondName: second_name,
email: user_email,
isCharity: charity
});
)
以上两种解决方案都可以在onAuthStateChanged中使用,但是我想在注册时捕获数据,而不是每次有人登录时都捕获。
任何帮助都会很棒。
答案 0 :(得分:1)
您必须使用.onAuthStateChanged
才能到达firebase.auth().currentUser
。它是异步的,在解决之前将为空/ null
。另外,请不要忘记,新的基于电子邮件的帐户在单击验证电子邮件链接之前将不会.emailValidated:true
。 ...一些需要考虑的东西。