Элементы запроса счета монго - PullRequest
0 голосов
/ 05 июля 2019

У меня есть простой поиск GET.Проблема в том, что когда я использую некоторые критерии, такие как статус, имя или адрес электронной почты, он показывает правильные результаты, НО пагинация ведет себя так, как будто не было критериев.

Например, в БД есть один пользователь с именем Джон, поэтому я ищу Джонаи это дает мне именно его в результате.Но нумерация страниц показывает мне 10 страниц, и я не знаю, как это исправить.Когда я анализирую count, это дает мне все результаты, а не только один,

Вот мой контроллер

/**
 * GET /admin/users/:page
 * Find users
 */
exports.findUsers = (req, res, next) => {
  const perPage = 13
  const page = Number(req.params.page) || 1

  var query = {};

  const possibleQueryProps = [{
      "key": "id",
      "queryKey": "_id"
    },
    {
      "key": "email",
      "queryKey": "email"
    },
    {
      "key": "firstname",
      "queryKey": "profile.firstname"
    },
    {
      "key": "lastname",
      "queryKey": "profile.lastname"
    },
    {
      "key": "location",
      "queryKey": "profile.location"
    },
    {
      "key": "status",
      "queryKey": "profile.status"
    }
  ];

  possibleQueryProps.forEach(prop => {
    if (req.query[prop.key]) {
      query[prop.queryKey] = req.query[prop.key];
    }
  });
  console.log(query)
  User
    .find(query)
    .skip((perPage * page) - perPage)
    .limit(perPage)
    .exec(function (err, users) {
      User.countDocuments().exec(function (err, count) {
        if (err) return next(err)
        res.render('admin/users', {
          layout: "admin",
          users: users,
          query: req.query,
          active: {
            users: true
          },
          current: page,
          pages: Math.ceil(count / perPage),
          helpers,
          pagesArr: Array.from(Array(((Math.ceil(count / perPage)))).keys()).map(i => 1 + i),
          pagination: core.pagination(page, (Math.ceil(count / perPage))),
        })
      })
    })
};

Я буду благодарен за любой совет.

1 Ответ

1 голос
/ 05 июля 2019

Но нумерация страниц показывает мне 10 страниц, и я не знаю, как это исправить. Когда я анализирую счет, он дает мне все результаты, а не только один,

Вам нужно учитывать только те документы, которые соответствуют вашим критериям поиска, поэтому вместо User.countDocuments() вам понадобится что-то вроде User.countDocuments(query).

...