Вы можете просто манипулировать запросом и использовать здесь процесс промежуточного программного обеспечения Express, например,
router.get('/disabled', (req, res, next) => {
req.query.isEnabled = false;
return next('/');
});
Так что мой первоначальный ответ выше, к сожалению, был недоразумением. В документации объясняется, что маршруты могут быть пропущены (или завершены досрочно) через next('route')
- это была моя интерпретация, согласно которой route
в данном случае представлял собой любой URL-адрес маршрута, на который вы хотели ориентироваться, например, next('/some-url')
, но это не так передача 'route'
в next
на самом деле представляет собой особый вариант использования, который обрабатывается внутри, все, что передается в next
, приводит к ошибке, как объяснено в документах
Если вы передадите что-нибудь в функцию next () (кроме строки 'route'), Express будет рассматривать текущий запрос как ошибку и пропустит все оставшиеся функции маршрутизации и промежуточного программного обеспечения, не связанные с обработкой ошибок
Изначально я понимал, что только если объект Error был передан next
, это могло бы произойти, что явно не так
При таком понимании и рассмотрении порядок важен для других маршрутов, которые у вас могут быть, например /:id
, идея позволить запросу "провалиться" по маршруту /disabled
в /
больше не будет работать, как если бы Вы поймали быть /:id
заранее. В таком случае, я думаю, что вам лучше всего здесь вручную установить параметр запроса в соответствии с примером, но также задать URL-адрес в соответствии с желаемым маршрутом, например
router.get('/disabled', (req, res, next) => {
req.query.isEnabled = false;
req.url = '/';
return next();
});
router.get('/:id', ...);
router.get('/', getMultipleUsers);