Проблема с асинхронным котенком

#javascript #node.js #mongodb

#javascript #node.js #mongodb

Вопрос:

Я использовал Mongoose для запроса MongoDB во время веб-запроса что-то вроде:

 Kittens.find()
.where('born')
.gt(startDate)
.lt(endDate)
.exec(function (err, kittens) {
    if (err) {
    // bad kitty
    }

    // fun with kittens

    res.jsonp(kittenData);
});
  

К сожалению, если у меня слишком много котят, это происходит

Итак, мне нужно сделать это, чтобы уменьшить объем данных, которые я извлекаю:

 get real start date and real end date
make temp start date and temp end date
   get one days worth of kittens
   increment the temp dates by one
   until temp end date is past real end date
  

Проблема в том, что я пытался объявить:

 var allKittens = [];
  

А затем в цикле, где я запрашиваю количество дней котят:

 allKittens.concat(todaysKittens);
  

но allKittens , как правило, по-прежнему остается пустым массивом.

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

Пожалуйста, помогите мне

Комментарии:

1. Используйте push вместо concat .

2. Если вы хотите использовать concat then, вам нужно назначить возврат существующему массиву (чтобы сохранить то, что было добавлено в массив). Что-то вроде allKittens = allKittens.concat(todaysKittens);