【问题标题】:Using async with mongoose controllers/models将异步与猫鼬控制器/模型一起使用
【发布时间】:2017-02-17 20:47:26
【问题描述】:

我可以将每个模型都放在模型的回调中,但是那种混乱且难以阅读。我找到了一个名为 async 的 npm,但我不知道如何使用它。

User.find({
     "email":req.body.user_email
    }),
    function(err,response){
        if(!err){
            res.json(response);
        }
    })

AnotherModel.find(),
    function(err,response){
        if(!err){
            res.json(response);
        }
    })

我读过文档,但我不明白。

async.parallel([
    function(callback){ ... },
    function(callback){ ... }
], function(err, results) {
    // optional callback
};

我想要的是最后我只需要在合并来自多个模型的数据并将其发送到前端之后执行一个 res.json。

【问题讨论】:

  • 您是否考虑过为此使用 Promises。你的代码会更干净。检查 bluebird 的 node js 你可以承诺你的功能并使用 .settle 或 .props 来实现你想要的。
  • @nmargaritis aysnc 也是一个 npm 模块

标签: javascript node.js mongodb express asynchronous


【解决方案1】:

这样使用

async.parallel([
  function(callback) {
    User.find({
        "email": req.body.user_email
      }),
      function(err, response) {
        if (!err) {
          callback(null,response)
        }
      })
},
function(callback) {
  AnotherModel.find(),
    function(err, response) {
      if (!err) {
        callback(null,response)
    })

}],
function(err, results) {
  if(!err){
    res.json(results);
  // You will get array of results in your results agrs
  }
};

【讨论】:

    猜你喜欢
    • 2017-11-01
    • 2014-01-18
    • 2018-07-15
    • 2015-02-15
    • 2016-01-23
    • 2017-09-26
    • 2019-10-12
    • 2018-08-30
    • 2015-10-23
    相关资源
    最近更新 更多