ищу пользователя с mongodb, mongoose - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь включить функции, позволяющие пользователям искать в моем приложении других пользователей.

У меня есть поле ввода в форме navbar:

form.form-inline
   .input-group
      input.form-control(type='text', placeholder='Search for a user', name='search', aria-label='Search')
           .input-group-append
               button.btn.btn-primary(type='submit') 

Затем, в моем файле роутера, у меня есть этот маршрут:

// post route for searching for a user
router.post('/feed', isLoggedIn, (req, res) => {
    var name = req.body.search;
    var regex = new RegExp(name, 'i');

    User.find({'$or': [{'firstname': regex}, {'username': regex}]}, (err, foundUser) => {
        if (err) {
          console.log(err)
        } else {
          res.send("Found user is " + foundUser)
        }
    });
});

К сожалению, сообщение не работает правильно, и я не уверен, что не так. Введя что-то в строку поиска, я получаю строку с URL-адресом примерно так: http://localhost:3000/users/feed?search=tilda

но ничего не отправляется, и я не уверен, что почтовый маршрут даже достиг моего уровня.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018
router.get('/feed', isLoggedIn, (req, res) => {
    var name = req.query.search;
    var searchItem = '/'+name+'/' // basically checking for %Joh%

    User.find({'$or': [{'firstname': searchItem}, {'username': searchItem}]}, (err, foundUser) => {
        if (err) {
          console.log(err)
        } else {
          res.send("Found user is " + foundUser)
        }
    });
});

Пожалуйста, убедитесь, что ваше промежуточное программное обеспечение isLoggedIn возвращает true / вызывает next (), чтобы передать объект req / res в функцию обработки вашего маршрутизатора.

0 голосов
/ 30 апреля 2018

Вы смешиваете параметры строки запроса с параметрами POST.

http://localhost:3000/users/feed?search=tilda - параметр строки запроса. Вы должны получить это из объекта запроса с помощью

const { query: { search } } = req;

Если вы публикуете данные в теле, вы используете код, который вы написали с

const { search } = req.body;

Если вы используете вариант поиска имени, вы должны использовать GET и параметры запроса, чтобы быть спокойными.

Отредактировано, чтобы отразить предложение @Neil Lunn

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