Javascript 返回函数内部不工作(快照)
在注册用户之前,我一直在尝试检查数据库中是否已经有用户名,但返回不起作用,函数(快照)中的任何内容也不会更改其他全局变量来绕过它Javascript 返回函数内部不工作(快照),javascript,firebase,Javascript,Firebase,在注册用户之前,我一直在尝试检查数据库中是否已经有用户名,但返回不起作用,函数(快照)中的任何内容也不会更改其他全局变量来绕过它 function isDisplayNameTaken(name) { firebase .database() .ref() .child("users") .orderByChild("username") .equalTo(name) .once("value") .then((snapshot) =&
function isDisplayNameTaken(name) {
firebase
.database()
.ref()
.child("users")
.orderByChild("username")
.equalTo(name)
.once("value")
.then((snapshot) => {
return snapshot.exists();
});
}
这是无法通过的条件。在过去的5个小时里,我已经做了研究并试图解决这个问题。首先,请提前感谢,您不能在一个简单的
if
语句中使用promise结果。您应该执行以下操作:
if(isDisplayNameTaken($userDisplayNameField.val())) {
numberOfChecksPassed += 1
}
在您的示例中,使用一个简单的if
,if
语句将promise对象检查为其条件值,而不是解析值
要使其正常工作,isDisplayNameTake
需要返回一个承诺(它没有)
isDisplayNameTaken($userdisplayNameField.val()).then(taken => {
console.log('Is it taken?', taken);
});
function isDisplayNameTaken(name) {
return firebase // Notice the return here.
.database()
.ref()
.child("users")
.orderByChild("username")
.equalTo(name)
.once("value")
.then((snapshot) => {
return snapshot.exists(); // This return will resolve the promise but you are not returning the resolved promise out of the function.
});
}