Firebase回调函数中的变量未更改且值未定义

时间:2017-11-30 17:32:17

标签: javascript firebase asynchronous firebase-realtime-database callback

我正在开发一个firebase项目。在测试期间

return user.val().name;

将返回

undefined 

console.log(user.val().name) 

将返回存储在.name字段中的实际字符串。这是为什么。即使分配

也是如此
user.val().name

变量,变量保持未定义。请帮助弄清楚为什么会发生这种情况。我将它打印到csv。

这是我的代码:

var database = firebase.database();
var ref2 = database.ref('information/');

var id;
var name;

ref2.on("value", function (one) {

one.forEach(function (two) {

    if (typeof two.val().Id !== 'undefined') {
        id = two.val().Id;
        name = program(id); //name undefined

    }
    else {
       id = "";
    }

    csv = name + "," + id +"\n";


});

download(csv);

});
};


function program (id) {

var database = firebase.database();
var ref = database.ref("users/" + id + "/");

ref.on('value',function(user){

if (typeof user.val().name === 'undefined') {
    return null;
}
else {
    console.log(user.val().name); //this doesnt show undefined
    return user.val().name; //this shows undefined when returned to the name variable

}
})
}

注意:在firebase数据库中,名称值不为null。它添加了一个字符串。

0 个答案:

没有答案