尝试将返回数据保存到父作用域时,我遇到了一些范围问题。这是我的来源,任何帮助将不胜感激。我不能为我的生活得到表=数据。
我的数据var console.logs正确只是一个范围问题。
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;
};
答案 0 :(得分:1)
到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);
});