Раньше я делал пагинацию с помощью
await this.PupilModel.find().limit(limit).skip(offset) // limit и offset прилетают как requset.query
И если я хотел допустим открыть третью страницу, учитывая что на одной я отображаю 10 элементов, мне нужно было установить
limit в значение 10, а
offset в значение 20.
Но потом нужно было сделать фильтрацию и я использую для этих целей MongoDB Aggregation.
const result = await this.PupilModel.aggregate(
this.createFilterPipeline(filters) || [{ $match: {} }]
)
.limit(limit)
.skip(offset);
И теперь, если я хочу открыть вторую страницу, то
limit будет в значении 10, как и
offset. Выполняю запрос и получаю пустой массив:
Теперь, чтобы мне открыть вторую страницу,
limit должен быть 20, а
offset 10, а если третью страницу, то
limit = 30,
offset = 20
Почему так? Это какая-то особенность Aggregation Pipeline или ошибка в моём коде?