快速路线再次呼叫父路线

时间:2018-02-26 20:00:07

标签: node.js express

我有一条明确的路线,

路由器/ 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');
  }
};

1 个答案:

答案 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%确定中间件被击中两次(或来自错误的路线)?