expressjs app.VERB调用中next()和next('route')之间有什么区别?

Mer*_*erc 45 node.js express

文档内容如下:

app.VERB()方法在Express中提供路由功能,其中VERB是HTTP谓词之一,例如app.post().可以给出多个回调,所有都被平等对待,并且表现得像中间件一样,但有一个例外,即这些回调可以调用next('route')来绕过剩余的路由回调.该机制可用于在路由上执行前置条件,然后在没有理由继续匹配的路由时将控制传递给后续路由.

他们的意思是"绕过剩余的路线回调?"?我知道next()会将控制传递给下一个匹配的路线.但是......用什么功能可以控制next('route')...?

Mer*_*erc 69

我在5分钟后回答自己的问题时讨厌它. next('route')是在使用路由中间件时.所以如果你有:

app.get('/forum/:fid', middleware1, middleware2, function(){
  // ...
})
Run Code Online (Sandbox Code Playgroud)

函数middleware1()有机会调用next()将控制传递给middleware2,或者next('route')将控制传递给下一个匹配的路由.

  • API很奇怪.如果他们使用`next()`和`next_route()`或类似的东西会更有意义.甚至`next_middleware()`和`next_route()`.对两者使用相同的方法,一个采用固定的字符串参数基本上使它做一些非常不同的事情 - 这是非常意外的. (15认同)
  • 谢谢,这对我来说更好.我以为你可以从文档中查看的方式调用类似`next('users /:userId')`之类的内容.从你的评论听起来你只能传递常量字符串''route'`****. (6认同)
  • 不要讨厌它,你的智慧扩散是非常有价值的! (6认同)
  • @iconoclast加上如果你调用`next(error)`,如果你定义了一个,你最终会陷入错误捕获所有...一次调用来统治它们:-) (2认同)