首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速路由再次呼叫父路由

快速路由再次呼叫父路由
EN

Stack Overflow用户
提问于 2018-02-26 20:00:06
回答 1查看 738关注 0票数 1

我有一条特快路线,

路由器中的/blog.js

代码语言:javascript
复制
router.get('/', middleware.isLoggedIn, function(req,res){
//some code
res.render('blogs');
})

.(I)

然后我有另一种添加博客的方法,

代码语言:javascript
复制
router.get('/new', middleware.isLoggedIn, function(req,res){
//some code
res.render('newBlog');
})

.(Ii)

问题是,当我在浏览器中使用/blogs/new时,来自(i)的代码也会执行,但它不会呈现blogs模板。

为什么(ii)打中(i)?

更新

这是中间件:

代码语言:javascript
复制
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:

代码语言:javascript
复制
const express = require('express');
const app = express();

var blog = require('./routes/blog');
app.use('/blogs', blog);
EN

回答 1

Stack Overflow用户

发布于 2018-02-26 20:20:40

我认为您的错误可能在代码中的其他地方,一个更完整的示例可能有助于发现这一点。

这个简单的示例按预期工作,只调用路由和中间件一次,命中正确的路由。

代码语言:javascript
复制
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%确信中间件被击中两次(或来自错误的路由)?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48996169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档