2012-08-04 70 views
33

该文档读:expressjs app.VERB调用中next()和next('route')有什么区别?

的app.VERB()方法提供了快速, 的路由功能,其中VERB是HTTP动作之一,如app.post()。多 回调可能是放弃,所有人都一视同仁,并表现就像 中间件,与一个例外,这些回调可以调用 未来(“路径”),以绕过其余航线回调(S)。这种机制可用于执行路线上的先决条件,然后将 控制权传递给随后的路线,当没有理由继续执行 路线匹配时。

它们是什么意思“绕过剩下的路线回调?”?我知道next()会将控制权交给下一个匹配路线。但是...什么功能可以控制next('route') ...?

回答

51

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

app.get('/forum/:fid', middleware1, middleware2, function(){ 
    // ... 
}) 

功能middleware1()有机会打电话给next()控制传递给middleware2,或next('route')来控制完全传递到下一个匹配的路由。

+5

该API很奇怪。如果他们使用'next()'和'next_route()',或者类似的东西,会更有意义。甚至是'next_middleware()'和'next_route()'。对两者都使用相同的方法,一个采取固定的字符串参数基本上使它做一些非常不同的事情 - 这是非常意外的。 – iconoclast 2015-10-30 18:35:37

+3

谢谢,这对我来说更好。我认为你可以从它在文档中看到的方式调用诸如'next('users /:userId')'或类似的东西。从你的评论,它听起来像你只能传递常量字符串''route'' ** always **。 – willko747 2015-12-27 17:36:11

+1

不要恨它,你的wisdomespreading是非常宝贵的! – R01010010 2016-07-06 11:00:37

相关问题