Как обойти промежуточное ПО в экспрессе - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь обойти одно из промежуточных программ, используя next ('route').Даже в этом случае управление передается следующему промежуточному программному обеспечению вместо передачи его пути маршрута.

fun1 = (req,res,next) =>{
    res.locals.isLogin = true;
    next('route');
}

fun2 = (req,res,next) =>{
    res.locals.isLogin1 = true;
    next();
}

app.use(fun1);
app.use(fun2);

app.get('/',(req,res,next)=>{
    res.write('<h1>Hello ' + res.locals.isLogin + ' and ' + res.locals.isLogin1);
    res.end();
});

Response

1 Ответ

0 голосов
/ 29 января 2019

Средство next('route') не пропускает промежуточное ПО, добавленное с помощью функции use(), см .: Использование промежуточного ПО

Документация: Чтобы пропуститьостальные функции промежуточного программного обеспечения из стека промежуточного программного обеспечения маршрутизатора вызывают next('route'), чтобы передать управление следующему маршруту.ПРИМЕЧАНИЕ: next('route') будет работать только в функциях промежуточного программного обеспечения, которые были загружены с использованием функций app.METHOD () или router.METHOD ().

Итак, чтобы пропустить fun2, вот измененияв вашем коде,

fun1 = (req,res,next) =>{
    res.locals.isLogin = true;
    next('route');
}

fun2 = (req,res,next) =>{
    res.locals.isLogin1 = true;
    next();
}

app.get('/', fun1, fun2);

app.get('/',(req,res,next)=>{
    res.write('<h1>Hello ' + res.locals.isLogin + ' and ' + res.locals.isLogin1);
    res.end();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...