Как включить% 20 ​​для поиска строки в параметре URL с помощью mongoose - PullRequest
0 голосов
/ 30 сентября 2019

Я новичок в разработке стека MEAN и использую это https://github.com/diegohaz/rest в своем проекте. Я пытаюсь отфильтровать запрос mongoose по slug, но он не показывает результат, если в строке есть% 20. Пример в моей базе данных.

{name:"fname lname", slug:"fname%20lname"}

Тогда, если я буду искать его таким образом, результат не будет.

domain.com/by_slug/fname%20lname

Но если я попытаюсь удалить% 20 ​​в базе данных, как это

{name:"fname lname", slug:"fname lname"}

Тогда результат верный. Я думаю, что% 20 удаляется и преобразуется в пространство во время процесса поиска. Извините, я из среды PHP, MySQL.

Вот мой код контроллера.

    export const showBySlug = ({ params, query }, res, next) =>   
    Staff.find({ 'slug': params.slug })
    .then(notFound(res))
    .then((staff) => staff.map((staff) => staff.view()))
    .then(success(res))
    .catch(next)

1 Ответ

0 голосов
/ 01 октября 2019

Спасибо Нилу Ланну за его ответ.

Кажется, есть проблема с использованием

params.slug.replace(/ /,"%20")

, потому что, если слаг содержит 3 слова, он выдает какую-то ошибку. Поэтому вместо использования replace я просто закодировал его обратно с помощью encodeURIComponent (), так как он автоматически декодируется с помощью express.

Staff.findOne({ 'slug': encodeURIComponent(params.slug) })
    .then(notFound(res))
    .then((staff) => staff ? staff.view() : null)
    .then(success(res))
    .catch(next)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...