我正在使用的快照函数不会给我一个值,该值将不会执行代码。
数据库全部链接在一起,并删除了if语句和快照检查写入数据库的操作。但是,我希望它能正常工作,因为我不想重置用户变量,因此需要检查它是否已经存在。
function createUserData(){
var ref = firebase.database().ref("users/" + uid);
ref.once("value")
.then(function(snapshot) {
userExistCheck = snapshot.exists();
});
if (userExistCheck == false){
displayName = document.getElementById("name-input").value;
firebase.database().ref('users/' + uid).set({
username: displayName,
email: email,
module1: false,
module2: false,
module3: false,
module4: false,
module5: false,
module6: false
});
window.alert("working")
}
else{
window.alert(uid);
}
}
如果该用户不存在,则应添加该用户,但不添加。根本没有输出,并且显示uid
的窗口警报。
答案 0 :(得分:0)
此区块
ref.once("value")
.then(function(snapshot) {
userExistCheck = snapshot.exists();
});
是异步的,因此在它检索您的数据之前正在执行该操作
if (userExistCheck == false){
displayName = document.getElementById("name-input").value;
firebase.database().ref('users/' + uid).set({
username: displayName,
email: email,
module1: false,
module2: false,
module3: false,
module4: false,
module5: false,
module6: false
});
window.alert("working")
}
else{
window.alert(uid);
}
在检查该值是否存在后将不会更新,以解决此移动代码的问题
function createUserData(){
var ref = firebase.database().ref("users/" + uid);
ref.once("value")
.then(function(snapshot) {
userExistCheck = snapshot.exists();
if (userExistCheck == false){
displayName = document.getElementById("name-input").value;
firebase.database().ref('users/' + uid).set({
username: displayName,
email: email,
module1: false,
module2: false,
module3: false,
module4: false,
module5: false,
module6: false
});
window.alert("working")
}
else{
window.alert(uid);
}
});
}