2

プロフィールを表示するために、expressjsでルートとしてユーザー名を使用しようとしています。

app.get('/:username', function (req, res, next) {
    users.get_user(req.params.username, function (err, results) {
        if(results[0]) {
            res.render('/profile', {
                title: 'Profile',
                userinfo: results[0]
            });
        } else {
            next();
        }
    });
});

users.get_userdbからユーザーを取得する関数です。ユーザーが見つからない場合は、次のルートに進みます。/start他にも、などのページがたくさんあります。ルート/forumを通過するたびにdbが呼び出されるため、これを行うには不十分な方法ですか。/:username私の質問は、もっと良い方法はありますか?

4

1 に答える 1

7

アプリケーションのルートの前に、より具体的なルート(たとえば/start、 )を定義してみてください。Expressは、定義した順序でルートを照合します。/forum/:username

例:これを行う:

app.get('/start', function(req, res, next) {...});
app.get('/forum', function(req, res, next) {...});
app.get('/:username', function(req, res, next) {...});

いいえ

app.get('/:username', function(req, res, next) {...});
app.get('/start', function(req, res, next) {...});
app.get('/forum', function(req, res, next) {...});

このように、ユーザーがに移動しても、ルートにヒットしてデータベースにヒット/startすることはありません。/:username

于 2012-06-02T03:00:49.797 に答える