javascript - 修改firebase函数中的变量

标签 javascript firebase firebase-realtime-database

每当我的程序尝试修改 firebase 函数中的exists时,获得的值都是临时的。我希望能够在这个函数结束时返回truefalse。我看过一些相关的帖子,但似乎没有什么在职的。使存在全局并分离快照功能不起作用。有什么建议吗?

function checkIfUserExists(userId) {
    var exists;
    var usersRef = firebase.database().ref("users");
    usersRef.child(userId).once('value').then(function(snapshot) {
        exists = (snapshot.val() !== null); // exists is true or false
        userExistsCallback(userId, exists);
    });
    return exists; //exists is undefined
}

最佳答案

由于 once 返回一个 Promise,并且 then 返回一个新的 Promise,因此您不能只返回 exists,因为分配的 block 它的值稍后发生。

但是,您可以返回 promise ,并在调用站点中使用 then

function checkIfUserExists(userId) {
    var exists;
    var usersRef = firebase.database().ref("users");
    return usersRef.child(userId).once('value').then(function(snapshot) {
        exists = (snapshot.val() !== null); // exists is true or false
        return exists;
    });
}

然后在调用站点中:

checkIfUserExists(userId).then(exists => /*do something*/)

关于javascript - 修改firebase函数中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45742362/

相关文章:

firebase - 在Kotlin中检查Firebase Child值

javascript - jquery flot 指向错误的位置

javascript - AngularUI Select2 ajax : Selection not updating ng-model

java - 如何获取 Firebase 数据库中子条目的总和

ios - 想要从 firebase 数据库中提取 QR 值,但快照打印 nil

android - 升级到 firebase messaging 17.1.0 后未生成 token

javascript - Laravel Dusk 在表单确认后删除输入值

javascript - 将日期对象转换为毫秒

swift - 从 App Delegate 执行 Segue - Swift

ios - Xcode Firebase 崩溃报告权限被拒绝