首页 > 解决方案 > 为什么 req.route 显示以前的路线

问题描述

我有

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 如下:。在此处输入图像描述

这给了我错误,因为验证第一条路线需要 Id 为 Guid。这样已经一年多了,现在不行了,如果我把 router .route('/link-metadata') ... 放在 /:id 路由上面,它就可以了。为什么会这样?

标签: javascriptnode.jsexpressexpress-router

解决方案


因为订单。

.route('/:id')这意味着基本上/.*如此,任何路线都属于此范围。

因此,当您击中 时/link-metada,它正在击中/:id路线。req.param.id在哪里"link-metada"

将您/link-metadata的路线放在路线上方,/:id它将起作用。


推荐阅读