2013-09-10 3 views
0

У меня есть несколько запросов .find(), и я не уверен, что это хороший способ дождаться завершения всех обратных вызовов.Ожидание нескольких обратных вызовов от MongoDB в NodeJS

Я имею в виду, я мог бы делать счетчик и увеличивать его на каждую функцию обратного вызова и проверять его каждый раз, когда он изменяется, но я чувствую, что это действительно суровый.

Тогда есть некоторые библиотеки async и Q, но я не совсем уверен, что я хочу, чтобы использовать их просто ждать несколько обратных вызовов.

Итак, мой вопрос: у вас была такая же проблема и как вы ее исправили?

+0

Да, эти библиотеки должны решить именно эту проблему. – Bergi

ответ

2

Чтобы иметь счетчик, который увеличивается при каждом вызове обратного вызова, не является грязным, но то, что большинство библиотек делает в обратном порядке. Однако это один из способов ждать несколько обратных вызовов с помощью асинхр:

async.parallel({ 
    ppl: Person.find.bind(Person, { status: 1 }), 
    catz: Cat.find.bind(Cat, { meow: 2 }) 
}, 
function (err, result) { 
    console.log(result.ppl, result.catz); 
}); 

.bind() это просто ярлык для:

function (next) { 
    People.find({ status: 1}, next); 
} 

В зависимости от вашей ситуации, вы можете использовать async.series , .each или. waterfall.

+0

Спасибо, я буду использовать async :) – alexandernst

Смежные вопросы