Пагинация с заполненными данными в монго - PullRequest
0 голосов
/ 25 марта 2020

Я борюсь с проблемой извлечения данных из БД и применения функции «нумерации страниц». В моем случае у меня есть интернет-магазин с несколькими пользователями. Каждый пользователь может опубликовать sh свой профиль и создать свою продукцию. На сайте я хотел бы показать продукты пользователей, которые опубликовали sh их профили.

В настоящее время это мой код:

    Product.find({ active: true, deleted: false })
        .sort({ created: -1 })
        .populate({
          path: 'user',
          match: { isPublished: true },
          select: 'details slug name',
        })
        .exec((error, products) => {
            if (error) {
                return response.status(500).send({ error: 'There was an error.' });
            }

            if (products === null) {
                return response.status(404).send({ error: 'Products not found.' });
            }

            const productsWithPublishedTrainerProfile = _.filter(products, product => !_.isNull(product.user));

            return response.status(200).send(_.map(productsWithPublishedTrainerProfile, product => mapProduct(product)));
        });

Это работает - он выбирает все активные продукты, заполняет пользователя, который создал продукт, и если его профиль опубликован, то продукт не отфильтрованы.

Теперь мне нужно реализовать функцию «нумерации страниц», что означает, что я хочу использовать функции .skip() и .limit(), но этот пропуск / лимит будет работать для всех продуктов (не только для отфильтрованных). из них.) что означает, что конечная точка не будет возвращать точное количество продуктов (задается в функции limit().

Интересно, есть ли какое-либо решение для этого. Я прочитал о .aggregate с настройка $lookup, $skip и $limit, но после нескольких часов борьбы с ним я не смог заставить его работать.

Я буду очень признателен за любую помощь 101

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...