我有一条明确的路线,
路由器/ blog.js中的
mutate(patientdata, isAge34 = near(age, 34))
...(I)
然后我有另一条路线来添加像
这样的博客router.get('/', middleware.isLoggedIn, function(req,res){
//some code
res.render('blogs');
})
...(II)
问题是,当我在浏览器中访问router.get('/new', middleware.isLoggedIn, function(req,res){
//some code
res.render('newBlog');
})
时,(i)的代码也会执行,但它不会呈现/blogs/new
模板。
为什么(ii)击中(i)?
更新
这是中间件:
blogs
app.js中的:
middleware.isLoggedIn = function (req, res, next) {
if (req.session.isLoggedIn) { //this will be true if the user is autenticated
return next();
} else {
req.flash('login','Please Login First!');
res.redirect('/login');
}
};
答案 0 :(得分:1)
我认为您的错误可能位于代码中的其他位置,而更完整的示例可能有助于发现错误。
这个简单的示例按预期工作,只调用路由和中间件一次,命中正确的。
const express = require('express');
const app = express();
app.get('/blogs', testMiddleware, (req, res) => {
res.json({'route': 'blogs'});
});
app.get('/blogs/new', testMiddleware, (req, res) => {
res.json({'route': 'blogs-new'});
});
function testMiddleware(req, res, next) {
console.log(req.url);
next();
}
app.listen(3000);
你能提供更多代码吗?您是否100%确定中间件被击中两次(或来自错误的路线)?