我正在使用EJS模板来渲染页面。我用来呈现网页的数据是从Firebase数据存储区拉出的对象。如何从嵌套函数中返回对象?高阶函数
访问数据存储的方法是utils
对象的属性。数据从Firebase中提取,数据存储中的每个元素都添加到box
阵列中。
pullFromFirebase()
的结果设置为另一个js文件中定义的data
变量。我希望Firebase返回的对象框可用于data
。最终会将data
馈送到我的模板的呈现方法中。
尝试访问utils.box
通过data
变量返回undefined
页面加载时。我知道box
包含来自Firebase的元素;如果我在for
循环后console.log(box);
pullFromFirebase
中,则返回框内容。
同样,如果从控制台调用pullFromFirebase
与的内容也返回。从调音台呼叫data();
也会返回box
。
如何通过data();
以编程方式访问从pullFromFirebase
返回的对象?
// file1.js
var db = new Firebase('firebaseURL');
var data = utils.pullFromFirebase(); // data(); returns 'undefined'
// file2.js
var utils = {
pullFromFirebase: function() {
db.on("value", function(snapshot) {
var notebook = snapshot.val();
var box = [];
for (list in notebook) {
box.push(notebook[list]);
}
utils.box = box;
});
return utils.box;
}
};
的utils
回报的任何其他属性成功。只有box
对象不被返回。如果我console.dir(utils);
我看到box
作为属性utils
及其值。所以我当我看到box
我无法触摸box
。