我刚开始使用firebase for webapp,这是我的代码和问题。
where ( (booleanone, booleantwo, booleanthree) ) in ( (0b1, 0b0, 0b0), (0b0, 0b1, 0b0), (0b0, 0b0, 0b1) )
我希望在此步骤中在firebase数据库中保持数据持久性。
<script src="https://www.gstatic.com/firebasejs/4.1.2/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.1.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.1.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.1.1/firebase-database.js"></script>
<script>
// Initialize Firebase
var config = {
...
};
firebase.initializeApp(config);
</script>
<script>
function handleSignUp() {
var email = document.getElementById('email').value;
var password = document.getElementById('password').value;
if (email.length < 4) {
alert('Please enter an email address.');
return;
}
if (password.length < 4) {
alert('Please enter a password.');
return;
}
firebase.auth().createUserWithEmailAndPassword(email, password).catch(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 {
alert(errorMessage);
}
console.log(error);
});
}
function initApp() {
document.getElementById('quickstart-sign-up').addEventListener('click', handleSignUp, false);
}
window.onload = function() {
initApp();
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
console.log('yes');
问题是每当我刷新页面时,由于用户通过身份验证,控制台返回Yes(当我添加数据库推送逻辑时,每当我刷新页面时,数据都会一次又一次地保存。我试过移动console.log或数据库也推送到 } else {
console.log('no');
}
});
};
</script>
到我的.onAuthStateChange
和initApp()
函数。但无济于事。
根据firebase docs,我也尝试了以下内容:
handleSignUp()
然而,这几乎总是返回var user = firebase.auth().currentUser;
if (user) {
// User is signed in.
} else {
// No user is signed in.
}
作为号码我认为,由于验证发生需要一些时间,因此用户检查正在跳过身份验证并显示为没有用户通过身份验证。
问题是我希望用户注册(并自动登录,无论如何使用firebase)和用户详细信息(以及我要求用户在注册时填写的其他详细信息)保存在firebase数据库中只有时间。任何指针都会在这里受到赞赏。
答案 0 :(得分:0)
想想我明白了。然后使用(承诺):
firebase.auth().createUserWithEmailAndPassword(email, password).then(function() {
var user = firebase.auth().currentUser;
console.log(user.email);
}).catch(function(error)
创建用户后,该功能将立即执行(将在数据库中执行数据持久性),并且由于它不依赖于用户身份验证或不依赖于用户,以及唯一的电子邮件,此步骤永远不会重复,因此单次数据保存在数据库中。已多次浏览文档,不知怎的错过了。道歉的人。