Раньше я делал пагинацию с помощью
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 или ошибка в моём коде?