У меня есть приложение, структурированное с 3 маршрутами (api, admin, default). Каждый живет в своем собственном файле, имеет собственное промежуточное программное обеспечение и экспортирует маршрут. Проблема, с которой я сталкиваюсь, заключается в том, что я хочу перенаправить на другой маршрут, который находится на другом маршрутизаторе. По сути, я хочу вызвать одну и ту же функцию, чтобы не отображать одно и то же представление из разных мест.
Я не хочу использовать res.redirect('/someplace') пользователя, потому что я хочу иметь возможность передавать объекты req и res методу.
|-app.js
|-routes
|---admin.js
|---api.js
|---default.js
Маршруты требуются и используются в app.js следующим образом.
app.use('/api', require('./routes/api')(passport);
app.use('/admin', require('./routes/admin')(passport);
app.use('/', require('./routes/default')(passport);
Внутри администратора, если есть ситуация, когда мне нужно перенаправить для входа в систему и передать некоторые данные
// authenticates all routes for the admin router
router.use(function(req, res, next){
if(req.isAuthenticated()){
return next();
}
res.flashMessage.push('Session expired'); //is lost after redirect
res.redirect('/login');
//do I need to restructure my whole app so that I don't
//have to call res.redirect('login')
});
Любые идеи о том, как структурировать это? Нужно ли мне экспортировать каждый метод и хранить все мои маршруты в одном файле маршрутизатора? Это не очень чисто, но если функции находятся где-то еще, это может быть слишком грязно.
/login
, он не видит сообщения, но если он перенаправляется туда, вы включаете исходный URL-адрес в качестве параметра URL-адреса и, если он существует, отображаете сообщение. - person dylants   schedule 31.05.2014