Javascript next()不是';不要跳过中间件的其余部分
我对整个express路由逻辑(以及node和js)都是新手。但我有一个问题,我似乎无法追踪,但我想我理解它的背景。好吧,现在,这没什么意义了,反正是这样 我正试图根据req.query中的数据有条件地跳过中间件,它会很好地呈现预期的表单页面,除了我在控制台中从上一个中间件获得“Cannot send header tweep…”这一事实之外,我认为我跳过了它 根据我所能收集的信息,next()应该立即让我进入下一个中间件,并完全跳过该块的其余部分(有点像Javascript next()不是';不要跳过中间件的其余部分,javascript,node.js,express,Javascript,Node.js,Express,我对整个express路由逻辑(以及node和js)都是新手。但我有一个问题,我似乎无法追踪,但我想我理解它的背景。好吧,现在,这没什么意义了,反正是这样 我正试图根据req.query中的数据有条件地跳过中间件,它会很好地呈现预期的表单页面,除了我在控制台中从上一个中间件获得“Cannot send header tweep…”这一事实之外,我认为我跳过了它 根据我所能收集的信息,next()应该立即让我进入下一个中间件,并完全跳过该块的其余部分(有点像return如何将您踢出函数)。这不对吗
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()
});
});
您需要放入
返回调用next()
后的code>;仅调用next()不会停止当前函数的执行
替换
if(req.query.action!=='view'){next();}代码>
与
if(req.query.action!='view'){next();return;}代码>您需要将返回调用next()
后的code>;仅调用next()不会停止当前函数的执行
替换
if(req.query.action!=='view'){next();}代码>
与
if(req.query.action!='view'){next();return;}代码>侧注:附加到控制流语句的块(如if
)自行终止;否<代码>代码>在它之后是必需的。(只有在JavaScript中空语句才有效。)好的,很高兴知道。仍然在这里找到我的表单(没有双关语)…旁注:附加到控制流语句的块(如if
)自行终止;否<代码>代码>在它之后是必需的。(只有在JavaScript中空语句才有效。)好的,很高兴知道。仍然在这里找到我的形式(没有双关语的意思)…现在,这很有意义。来自C语言的mcu,我一直觉得js几乎是一个读心术的人,让我在执行和范围方面思考起来很奇怪。无论如何,谢谢你,伙计!现在,这很有道理。来自C语言的mcu,我一直觉得js几乎是一个读心术的人,让我在执行和范围方面思考起来很奇怪。无论如何,谢谢你,伙计!