我从数据库(Mongo)获得了一个函数我根据结果保存了圆顶变量,但我不能在外边函数中使用该变量。我该如何访问变量?
目前,我在使用控制台的函数中得到了一个结果。但我在外部未定义中使用相同的变量,但是,我使用我面临相同的错误未定义。 如果没有超时功能,我该如何完成。
var all_mail;
mailModel.find({}, function (err, docs) {
console.log(docs); //Got results this console
all_mail = docs;
});
console.log(all_mail); //This is showing undefind

答案 0 :(得分:1)
您需要了解node.js如何处理异步行为。在这种情况下,您的回调函数只能在范围内访问docs
。
你认为如果你等待的时间很长,你的变量很可能会被分配。但是,这确实不是节点的做法。
您很可能应该在传递给docs
的函数中对find()
执行任何操作。
mailModel.find({}, function (err, docs) {
doSomething(docs);
});
这可能会彻底改变您的程序结构。您可能还希望使用Mongoose使用promises(http://mongoosejs.com/docs/promises.html),然后使用async
/ await
,只要您的节点版本支持它。
我相信使用await
的承诺看起来像是:
var docs = await mailModel.find({}).exec();
doSomething(docs);