我是整个快速路由逻辑(以及节点和js)的新手。但我有一些问题似乎无法追查,但我想我理解它的背景。那么现在,这没有多大意义,无论如何它仍然存在。
我正试图根据req.query中的数据有条件地跳过中间件,并且它使得预期的表单页面很好,除了我在前面的控制台中得到“无法发送标题两次......”的事实中间件,我以为我跳过了。
从我接下来可以收集的内容()应该立即让我到下一个中间件并完全跳过剩下的块(有点像return
踢出一个函数)。这不正确吗?
路径:localhost:3000 / JohnnyBoy?action = form
router.get('/:name/', function(req, res, next) {
if(req.query.action !== 'view') { next(); };
console.log('Why am I seeing this in the console?');
res.render('first', {
title: req.params.name
});
});
router.get('/:name/', function(req, res, next) {
res.render('form', {
title: req.params.name + ' This is a form page',
formFields: fields.userPostFields()
});
});
答案 0 :(得分:2)
您需要在致电return;
后放置next()
;只调用next()不会停止执行当前函数。
替换
if(req.query.action !== 'view') { next(); };
带
if(req.query.action !== 'view') { next(); return;};