#javascript #node.js #mongodb #express #asynchronous
#javascript #node.js #mongodb #экспресс #асинхронный
Вопрос:
Я могу поместить каждую модель в обратный вызов model, но такой беспорядочный и трудный для чтения. Я нашел npm с именем async, но я понятия не имею, как его использовать.
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 после объединения данных из нескольких моделей и отправки их во внешний интерфейс.
Комментарии:
1. Рассматривали ли вы возможность использования обещаний для этой цели? Ваш код будет намного чище. Проверьте bluebird на наличие узла js, вы можете обещать свои функции и использовать .settle или .props для достижения желаемого.
2. @nmargaritis aysnc также является модулем npm
Ответ №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
}
};