2016-10-09 3 views
1

Я могу поместить каждую модель в обратный вызов модели, но такой грязный и трудночитаемый. Я нашел npm под названием async, но я понятия не имею, как его использовать.Использование async с контроллерами/моделями mongoose

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 после того как я объединить данные из нескольких моделей и отправить его к переднему концу.

+0

Рассматривали ли вы с помощью Promises по этой причине. Вы код будет намного чище. Проверьте bluebird для узла js, вы можете обещать свои функции и использовать .settle или .props для достижения того, чего хотите. – nmargaritis

+0

@nmargaritis aysnc также является модулем npm –

ответ

0

Используйте его как этот

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 
    } 
}; 
Смежные вопросы