router.get без параметра, но запрашивает параметр - PullRequest
3 голосов
/ 13 апреля 2019

Я пытаюсь использовать express nodejs и JWT.Вот исходный код того, через что я прошел: ссылка .

Я защищаю все маршруты, кроме маршрутов, которые я объявляю в файле jwt.js.

  1. URL '/trial', не защищен.Контроллер находится внутри файла trial.controller.js.Когда я нажимаю URL-адрес в почтальоне, как с помощью get, так и с помощью метода post и без аутентификации (No Auth), я получаю то, что ожидаю.
  2. Но этого не происходиткогда я нажму '/users/testdata'.Он не защищен, но если я нажму на него методом get и без аутентификации, он вернет error 500 с сообщением "Cannot read property 'sub' of undefined" в почтальоне.Но когда я использую метод post, я получаю то, что ожидаю.

Итак, что не так с методом get?

Пожалуйста, смотрите ссылку вышедля полного кода.Любая помощь будет много значить для меня.Спасибо!

1 Ответ

3 голосов
/ 13 апреля 2019

Проблема возникает из-за того, что маршрут router.get('/:id', getById); определен до маршрута router.get('/testdata', getTest);.Поэтому, когда вы выполняете запрос к маршруту /testdata, он обрабатывается маршрутом /:id, который требует аутентификации для работы и использует атрибут currentUser.sub, хотя переменная currentUser в настоящее время не определена.

Просто измените порядок с

router.get('/:id', getById);
router.get('/testdata', getTest);

на

router.get('/testdata', getTest);
router.get('/:id', getById);   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...