13

現在のユーザーをすべてのアクションで使用できるようにする、一種の変更前フィルターを作成したいと思います。followintアプローチはうまく機能し、グローバル変数を宣言する必要さえありませんでした。

app.use(function(req, res, next){
    if(req.session.user_id){
        /* Get user from database
           and share it in a variable
           that can be accessed frooom ...
        */
        User.find({ /* ... */ }, function(err, users){
            if(users.length == 1){
                req.current_user = users[0];
            }
            next();
        });
    }
    else{
        next();
    }
});

app.get('/', function(req, res){
    // ... here!!
    console.log(req.current_user);
    res.render('index', {
        current_user: req.current_user,
    });
});

しかし、自分がreq所有していないものを変更するのが正しいかどうかわからないため、操作してもよいかどうかはまだわかりません。これを行うためのより良い方法はありますか?

4

2 に答える 2

7

セッションまたはユーザーオブジェクトでreqを拡張するのは一般的なアプローチです

たとえば、次の例を参照してください。

于 2012-05-02T11:09:49.123 に答える