如何在节点 js 中为全局变量分配猫鼬结果?
Posted
技术标签:
【中文标题】如何在节点 js 中为全局变量分配猫鼬结果?【英文标题】:how can i make a assign mongoose result in global variable in node js? 【发布时间】:2018-02-17 17:44:09 【问题描述】:我从数据库(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
【问题讨论】:
【参考方案1】:您需要了解 node.js 如何处理异步行为。在这种情况下,您的回调函数只能在范围内访问docs
。
您的想法是正确的,如果您等待足够长的时间,您的变量很可能会被分配。但是,这确实不是节点的做事方式。
您很可能应该在传递给find()
的函数中对docs
做任何您想做的事情。
mailModel.find(, function (err, docs)
doSomething(docs);
);
这可能会彻底改变程序的结构。您可能还想研究在 Mongoose 中使用 Promise (http://mongoosejs.com/docs/promises.html),然后使用 async
/await
,只要您的节点版本支持它。
我相信使用带有 await
的 Promise 看起来像:
var docs = await mailModel.find().exec();
doSomething(docs);
【讨论】:
以上是关于如何在节点 js 中为全局变量分配猫鼬结果?的主要内容,如果未能解决你的问题,请参考以下文章