2

アプリケーションを 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 つのルーター ファイルに保持する必要がありますか? これはあまりきれいではありませんが、関数が別の場所にある場合は、あまりにも乱雑になる可能性があります。

4

1 に答える 1