为什么req.route显示先前的路线

时间:2019-03-07 14:13:17

标签: javascript node.js express express-router

我有

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。这样已经一年多了,如果我把路由器放了,现在就不能用了   .route('/ link-metadata')... // id路由上方,它可以正常工作。为什么会这样?

1 个答案:

答案 0 :(得分:1)

因为订单。

.route('/:id')基本上意味着/.*,因此,任何路线都将落入此范围。

因此,当您击中/link-metada时,它击中了/:id路线。 req.param.id"link-metada"的地方。

/link-metadata放在/:id路线上方,这样就可以了。