我正在尝试在我的网页上创建“创建用户”功能。创建用户时,它同时存储用户写入的数据,例如姓名等。这样做后,应该向用户显示一个仅供用户使用的页面,问题在于我的代码在用户数据(姓名等)之前。 )被存储后,用户将看到一个新页面。我怎样才能防止这种情况发生?
我的创建用户功能:
firebase.auth().createUserWithEmailAndPassword(email, pass).then(function() {
// User is created
const imageUrl = "images/genericProfilePicture.png";
const admin = false;
const currentTime = timeStamp();
var user = firebase.auth().currentUser;
const userId = user.uid;
firebase.database().ref('users/' + userId).set({
name: name,
email: email,
address: address,
zip: zip,
city: city,
department: department,
membership: membership,
admin: admin,
added: currentTime,
profile_picture : imageUrl
});
window.open('frontpage.php', '_top');
}).catch(function(error) {
// Error has happened
var errorCode = error.code;
var errorMessage = error.message;
alert(errorMessage);
});
尝试了这段代码,没有任何运气,没有存储数据,也没有显示新页面:
firebase.database().ref('users/' + userId).set({
name: name,
email: email,
address: address,
zip: zip,
city: city,
department: department,
membership: membership,
admin: admin,
added: currentTime,
profile_picture : imageUrl
}).then(() => {
window.open('frontpage.php', '_top');
});
最佳答案
选项 1:
只需将 set()
与 then()
block 链接起来即可:
firebase.database().ref('users/' + userId).set({
name: name,
email: email,
address: address,
zip: zip,
city: city,
department: department,
membership: membership,
admin: admin,
added: currentTime,
profile_picture : imageUrl
}).then(function(){
window.open('frontpage.php', '_top');
}) ...
选项 2:(如果您确实需要验证某些用户详细信息)
您可以检查用户是否已添加到数据库中,然后显示该窗口。
类似于:
function getUserStatus(uid) {
return firebase.database().ref('/users/' + uid).once('value').then(function(snapshot) {
if (snapshot.val() != null) {
return snapshot.val().name;
}
return '';
});
}
您可以在代码中链接此方法:
firebase.database().ref('users/' + userId).set({
name: name,
email: email,
address: address,
zip: zip,
city: city,
department: department,
membership: membership,
admin: admin,
added: currentTime,
profile_picture : imageUrl
});
getUserStatus(user.uid).then(function(name) {
if (name !== '') {
window.open('frontpage.php', '_top');
}
});
关于javascript - 创建用户,保存数据,然后更改页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45569510/