アプリケーションを 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')
});
これを構造化する方法についてのアイデアはありますか?すべてのメソッドをエクスポートし、すべてのルートを 1 つのルーター ファイルに保持する必要がありますか? これはあまりきれいではありませんが、関数が別の場所にある場合は、あまりにも乱雑になる可能性があります。