hostnameempty
@hostnameempty
Frontend developer

Как получить большое количество данных пачками в mongoose + nodejs?

Есть метод в контроллере, который запрашивает большое количество данных у базы посредством такой цепочки Model.find(obj).select(obj).populate(str).exec(fn)
Данных много и монго валится по таймауту. Решил поискать, как получать данные пачками. Наткнулся на решение с пейджингом, используя .skip() и .limit(). Но так и не понял, как получить все данные таким образом. Рекурсией запросы посылать с изменением передаваемых значений в .skip() и .limit()? Может быть есть нормальное решение, как получить портянку данных не перегружая при этом сервер
Помогите, пожалуйста, я новичок в mongo и node

Заранее спасибо!
  • Вопрос задан
  • 860 просмотров
Решения вопроса 1
hostnameempty
@hostnameempty Автор вопроса
Frontend developer
Все оказалось просто
Сделал с помощью cursor()

var bigData = [];
var cursor = Model.find(obj).select(obj).populate(str).cursor({batchSize:100});
cursor.
  on('data', doc => {
     if(doc) {
       bigData.push(doc);
     }
  })
  .on('end', () => {
     // производим дальнейшие действия с данными
  })
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@SergeyBugai
Лумаю это то что вам нужно ссылка
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы