我正在尝试使用用户名作为 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_user
是一个从数据库中获取用户的函数。如果它没有找到用户,它将继续到下一条路线。我还有很多其他页面,例如 /start
、/forum
等。这样做是否不够充分,因为每次通过时都会调用 db通过 /:username
路由。我的问题是,有没有更好更充分的方法?
最佳答案
尝试在应用程序中的 /:username
路由之前定义更具体的路由(例如 /start
、/forum
)。 Express 按照您定义的顺序匹配路由。
例如这样做:
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
路由并导致数据库命中。
关于javascript - 使用用户名的 Expressjs 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10859036/