2 回答
TA贡献1886条经验 获得超2个赞
正如 Daniel 在评论中所解释的那样,外部函数永远不会返回 true。异步解决方案可能是这些:)
function name_match(user_id, user_realname) {
return new Promise(function (resolve, reject) {
var dbref = firebase.database().ref();
var namesref = dbref.child("names");
namesref.on("value", function(snapshot) {
var matched = false;
snapshot.forEach(i => {
if(i.key == user_id && i.child("realname").val() == user_realname) {
matched = true;
}
});
if (matched) {
resolve()
} else {
reject()
}
});
});
}
在调用函数的另一边
name_match('userId', 'userName').then(function(){
//matched
}, function(){
//unmatched
});
其他方法是使用回调:
function name_match(user_id, user_realname, cb) {
var dbref = firebase.database().ref();
var namesref = dbref.child("names");
namesref.on("value", function(snapshot) {
var matched = false;
snapshot.forEach(i => {
if(i.key == user_id && i.child("realname").val() == user_realname) {
matched = true;
}
});
cb(matched);
});
}
在这种情况下:
name_match('userId', 'userName', function(matched) {
console.log(matched);
})
添加回答
举报