我正在创建具有相同功能的多条路线。是否有更好的DRY方法来创建这些路径,而不是像我下面那样复制和粘贴它们?
app.get('/adminoverviews', function(req, res, next){
if(!req.isAuthenticated()) {
res.status(403);
res.redirect('/login');
res.end();
}else{
next();
}
},function(req, res) {
res.render('index.ejs',{
bootstrappedUser: req.user,
page: 'admin'
})
});
app.get('/adminoverviews/:id', function(req, res, next){
if(!req.isAuthenticated()) {
res.status(403);
res.redirect('/login');
res.end();
}else{
next();
}
},function(req, res) {
res.render('index.ejs',{
bootstrappedUser: req.user,
page: 'admin'
})
});
答案 0 :(得分:1)
我首先将authenticate
分隔到它自己的声明中
var authenticate = function(req, res, next) {
if(!req.isAuthenticated()) {
res.status(403);
res.redirect('/login');
res.end();
} else {
next();
}
}
如果/adminoverviews
与/adminoverviews/:id
的路线功能不同:
app.get('/adminoverviews', authenticate, function(req, res) {
}
app.get('/adminoverviews/:id', authenticate, function(req, res) {
}
否则,您可能会执行与authenticate
您可能需要使用:id
进行一些验证。我建议使用router.param
。
http://expressjs.com/api#router.param