【问题标题】:how can i make a assign mongoose result in global variable in node js?如何在节点 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

【问题讨论】:

    标签: javascript node.js express mongoose mean-stack


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-21
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 2018-08-22
      • 1970-01-01
      相关资源
      最近更新 更多