【问题标题】:Get variable value, javascript firebase获取变量值,javascript firebase
【发布时间】:2018-08-31 02:22:19
【问题描述】:

我有一个问题。我试图从一个变量中获取价值,但我不能这样做。如果有人可以提供帮助,我将不胜感激。这是我的代码。

function getInfo() {
    var ref = firebase.database().ref("db_storage/");
    var info = 0;

    ref.on("value", function(snapshot) {
        info = snapshot.val().length;
    }, function (error) {
        console.log("Error: " + error.code);
    });

    return info;
}

var info = getInfo();
alert(info);

【问题讨论】:

  • 您好,欢迎来到 StackOverflow。我的猜测是您的info 不是您所期望的。请解释你得到了什么,以及你认为它应该是什么。请参阅 stackoverflow.com/help/how-to-ask 以获取有关表达您的问题的提示。
  • 我得到零(0)。我需要获取数组中的元素数量(数据库中的行)。 snapshot.val().length 返回这个数字,但是我不能在函数之外使用这个数字。
  • 这(可能)是因为您的 info = snapshot.val().length 发生在 异步 回调中。看看stackoverflow.com/questions/14220321/…stackoverflow.com/questions/23667086/…

标签: javascript firebase


【解决方案1】:

关于我上面的评论。

ref.on("value"...) 是一个事件侦听器,当数据库引用分派“值”事件时触发该事件侦听器。当您的代码运行时,它会(粗略地说)进入getInfo(),附加事件侦听器,然后继续执行您的最后一行而不等待“值”事件

要连接,请按如下方式传递回调函数。

function getInfo(callback) {
    var ref = firebase.database().ref("db_storage/");

    ref.on("value", function(snapshot) {
        var info = snapshot.val().length;
        return callback(info);
    }, function (error) {
        console.log("Error: " + error.code);
        return callback(0);
     });
}

getInfo(function(info) {
    alert(info);
});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-06-02
  • 2018-09-02
  • 2021-05-06
  • 1970-01-01
  • 2019-01-31
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多