我想创建一个使用jquery和firebase的注册系统,而我遇到问题的问题是不知道'调用firebase'返回的内容。让我告诉你在我的代码:Javascript和Firebase 3 - 使用电子邮件和密码创建用户
HTML(通过去除不相关的代码简化):
<div id="registerForm">
<input type="text" id="userEmail" placeholder="Email">
<input type="password" id="userPass" placeholder="Password">
<button type="button" id="register">Register</button>
</div>
JQuery的(再次,仅表示对于火力地堡和注册代码):
<script src=" /* Jquery url */ "></script>
<script src=" /* Firebase url */ "></script>
<script>
// Initialize Firebase
var config = {
apiKey: "*my api key*",
authDomain: "*myProject*.firebaseapp.com",
databaseURL: "https://*myProject*.firebaseio.com",
storageBucket: "*myProject*.appspot.com",
};
firebase.initializeApp(config);
</script>
<script>
$('#register').click(function() {
var email = $('#userEmail');
var pass = $('#userPass');
if(email.val() && pass.val()){
// this is where I stop knowing how all this firebase stuff works
firebase.auth().createUserWithEmailAndPassword(email.val(), pass.val()).catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorCode + ' - ' + errorMessage);
});
// This is where it doesn't wanna work. Please check the first paragraph below
// for the explanation of how it doesn't work.
console.log('this message shouldn\'t show if there wasn\'t an error.'); //This fires before firebase.auth()... for some reason
if(error) {
console.log('there was an error');
} else {
console.log('everything went fine');
}
} else {
console.log('fill in both fields');
}
});
</script>
我想要一个if-else语句来检查firebase.auth方法返回的内容。如果是错误,则显示错误,如果不显示成功消息并将其他用户详细信息存储到userDetails数据库表等,但无论我放在哪里的代码似乎都在firebase.auth方法之前执行。我认为问题在于我不知道firebase的返回变量是如何调用的,以便我可以执行if(firebase.auth.success(或其他)){} else {}。
上述代码有效,就像注册成功,新用户将显示在firebase上一样,如果出现错误,我可以打印并查看错误。问题只是不知道如何处理对firebase的成功/失败调用,以及稍后写入的代码似乎在调用firebase之前执行的事实。
请忽略我可能犯的任何拼写/语法错误,因为它会将错误复制到SO而不是实际代码中的错误。
任何帮助将不胜感激,谢谢!