Почему req.route показывает предыдущий маршрут - PullRequest
0 голосов
/ 07 марта 2019

У меня есть

const router = express.Router();

router
  .route('/:id') 
  .delete(
    validate(messageValidator.deleteById),
    MessageController.deleteById,
  )
  .get(
    validate(messageValidator.getById),
    MessageController.getById,
  );

router
  .route('/link-metadata')
  .get(
    validate(messageValidator.link),
    MessageController.getLinkMetadata,
  );

Я не знаю как, но когда я делаю запрос к / link-metadata, req.route выглядит так:enter image description here

Это дает мне ошибку, поскольку проверка первого маршрута требует, чтобы Id был Guid.Так было уже больше года, но теперь оно не работает, если я добавлю маршрутизатор .route ('/ link-metadata') ... выше маршрута /: id, он работает.Почему это происходит?

1 Ответ

1 голос
/ 07 марта 2019

из-за заказа.

.route('/:id') это означает в основном /.*, поэтому любой маршрут подпадает под это.

Итак, когда вы нажимаете /link-metada, он попадает на маршрут /:id. Где req.param.id равно "link-metada".

Поместите /link-metadata над маршрутом /:id, и он будет работать.

...