Я обнаружил довольно полезное устройство в Express, чтобы перейти к новой цепочке промежуточного ПО в Express
скажем, что у нас есть это:
router.post('/', function(req,res,next){
next();
}, function(req,res,next){
next('route'); //calling this will jump us down to the next router.post call
}, function(req,res,next){ //not invoked
next();
}, function(err,req,res,next){
//definitely not invoked
});
router.post('/', function(req,res,next){ //this gets invoked by the above next('route') call
next();
}, function(err,req,res,next){
});
Я мог видеть, где это может быть полезно, и я пытаюсь выяснить, как это работает.
Проблема, которую я вижу, заключается в том, что это решение, похоже, немного ударяет по дороге. Я хочу, чтобы иметь возможность вызвать следующий ( "route: a" ) или следующий ( "route: b" ), поэтому я могу выбрать, какой обработчик вызывается по имени, а не только в следующем списке.
В качестве примера у меня есть следующее:
router.post('/', function (req, res, next) { //this is invoked first
console.log(1);
next('route');
});
router.post('/', function (req, res, next) { //this is invoked second
console.log(2);
next('route');
});
router.use('foo', function (req, res, next) { //this gets skipped
console.log(3);
});
router.post('bar', function (req, res, next) { //this get skipped
console.log(4);
});
router.post('/', function(req,res,next){ // this gets invoked third
console.log(5);
});
То, что я ищу, - это способ вызвать "foo" и "bar" по имени. Есть ли способ сделать это с помощью Express?