我正在使用Firebase作为后端在React中进行一些身份验证。
我有一个函数来检查用户是否存在按预期工作:
checkIfUserExists(uid) {
ref.child('users').child(uid).once('value', function(snapshot) {
if (snapshot.exists()) {
console.log("User exists");
return true;
} else {
console.log("User does not exist");
return false;
}
});
}
当我调用它传递一个uid时,如果用户存在与否,它将写入控制台。
this.checkIfUserExists(userId);
我想获得用户是否登录的布尔表示,但尝试执行此类操作将始终打印“无用户”。
if (this.checkIfUserExists(userId)) {
console.log('The user does really exist');
} else {
console.log('No user');
}
如果我尝试
console.log(this.checkIfUserExists(userId));
控制台输出“未定义”。
我接近这个错误的方式吗?为什么不明确?
答案 0 :(得分:1)
内部函数内部的return语句不会通过外部函数返回值。而是尝试发送像这样的函数
checkIfUserExists(uid, callback) {
ref.child('users').child(uid).once('value', function(snapshot) {
callback.call(null, snapshot.exists());
});
};
checkIfUserExists(uid, function(exists){
if(exists){
console.log("User exists");
}else{
console.log("User does not exist");
}
});