我有一条特快路线,
路由器中的/blog.js
router.get('/', middleware.isLoggedIn, function(req,res){
//some code
res.render('blogs');
}).(I)
然后我有另一种添加博客的方法,
router.get('/new', middleware.isLoggedIn, function(req,res){
//some code
res.render('newBlog');
}).(Ii)
问题是,当我在浏览器中使用/blogs/new时,来自(i)的代码也会执行,但它不会呈现blogs模板。
为什么(ii)打中(i)?
更新
这是中间件:
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');
}
};in app.js:
const express = require('express');
const app = express();
var blog = require('./routes/blog');
app.use('/blogs', blog);发布于 2018-02-26 20:20:40
我认为您的错误可能在代码中的其他地方,一个更完整的示例可能有助于发现这一点。
这个简单的示例按预期工作,只调用路由和中间件一次,命中正确的路由。
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%确信中间件被击中两次(或来自错误的路由)?
https://stackoverflow.com/questions/48996169
复制相似问题