您可以在这里操纵请求并利用Express中间件流程,例如:。
router.get('/disabled', (req, res, next) => {
req.query.isEnabled = false;
return next('/');
});
很遗憾,我上面的最初回答是一个误解。文档中解释了可以通过以下方式跳过(或提前退出)路由
next('route')
-我的解释是
route
在本例中,是您想要针对的任何路由URL,例如:。
next('/some-url')
,情况并非如此,通过
'route'
到
next
实际上是一个内部处理的特殊用例
下一个
导致错误,如中所述
docs
如果将任何内容传递给next()函数(字符串“route”除外),Express会将当前请求视为错误,并将跳过任何剩余的非错误处理路由和中间件函数
我最初的理解是,只有将错误对象传递给
下一个
这会发生的,显然不是这样
了解了这一点,考虑订购对于您可能拥有的其他路线很重要,例如:。
/:id
,让请求通过
/disabled
路由到
/
将不再像被抓到的那样工作
/:id
预先在这种情况下,我认为您最好还是按照示例手动设置查询参数,但也要设置URL以匹配所需的路由,例如:。
router.get('/disabled', (req, res, next) => {
req.query.isEnabled = false;
req.url = '/';
return next();
});
router.get('/:id', ...);
router.get('/', getMultipleUsers);