javascript - 为什么 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 路由上面,它就可以了。为什么会这样?
解决方案
因为订单。
.route('/:id')
这意味着基本上/.*
如此,任何路线都属于此范围。
因此,当您击中 时/link-metada
,它正在击中/:id
路线。req.param.id
在哪里"link-metada"
。
将您/link-metadata
的路线放在路线上方,/:id
它将起作用。
推荐阅读
- spring-cloud-dataflow - 春季云数据流http发布错误
- neo4j - Neo4j - 因果集群和 HA 集群之间的区别
- ios - Google 身份验证 - 用户代理在 WebView (Nylas api) 上给出错误
- google-chrome-devtools - 使用 Puppeteer 时是否可以关闭 devtool 状态?
- android - mpandroidchart y 轴的不同标签颜色
- python - 在文本文件中查找数据集的最大值和最小值;趣味拼图
- python - 函数调用返回结果连续次数
- javascript - 为什么可选的 0 宽度捕获组中的前瞻会阻止组匹配?
- c# - 老鼠和猫追逐游戏
- azure - 从 OKTA 迁移到 Azure AD 的经验