NodeJS不能访问子节点中的对象作用域
NodeJS Can't Access Object Scope in Children
在尝试将返回数据保存到父范围时,我遇到了一些范围问题。这是我的来源,任何帮助将是非常感激的。我怎么也弄不出table = data.
我的数据变量控制台。日志正确,只是作用域的问题。
function OpenDB(mongoUrl, callBack){
var MongoClient = mongodb.MongoClient;
var url = mongoUrl || "mongodb://" + process.env.IP + "/test";
MongoClient.connect(url, function(err, db) {
if(err){
console.log(err);
}
console.log(" Connected correctly to server ");
callBack(db, function(){
console.log(" Disconnected from server ");
db.close();
});
}.bind(this));
}
var GetTableAsArray = function(tableName){
var table = [];
OpenDB(null, function(db,cb){
db.collection(tableName).find().toArray(function(err, data){
if(err){
console.log(err);
}
//this is the problem
table = data;
cb();
});
});
return table;
};
当GetTablesAsArray
函数返回时,table
仍然只是一个空数组。这里的问题是您的查询以异步方式发生,这意味着您的代码在继续之前不会等待查询完成。您可以使用回调来执行您想要的任何代码,一旦获取表的值。
var GetTableAsArray = function(tableName, callback){
OpenDB(null, function(db,cb){
db.collection(tableName).find().toArray(function(err, data){
if(err){
console.log(err);
}
//this is the problem
table = data;
cb();
callback (data);
});
});
};
GetTableAsArray('tableName', function (table) {
console.log(table);
});
相关文章:
- 向Angular作用域对象添加对象数组——TypeError
- 为什么对象的函数值没有自己的作用域
- 访问Javascript对象-Node.js的作用域问题
- 阻止控制器创建新的作用域对象
- 尝试将变量传递到对象中时的作用域问题'的方法构造函数
- 将对象作为参数传递时的 Javascript 函数作用域
- 在对象类上实现 jquery 作用域的最佳方法
- 嵌套的Angular指令触发父对象上的作用域函数
- 如何创建作用域的动态、基于实例的对象文字
- AngularJS select with ng选项不更新父作用域中的引用对象属性
- 作用域,在回调中丢失对对象的引用
- 在嵌套对象中继承此作用域
- Javascript作用域问题,对象在分配后没有数据
- Javascript-确定对象中是否有任何作用域引用
- 如何从不同的对象作用域访问可观察对象
- Javascript/jQuery对象作用域问题
- 2对象作用域相互冲突
- Javascript函数作用域vs对象作用域
- NodeJS不能访问子节点中的对象作用域
- 为什么将变量(在对象作用域之外)设置为等于对象方法返回未定义的结果?