我正在尝试配置expressJS路由。
app.route(base + '/inventory/adjustments').get(policy.isAllowed, inventoryChangeCtrl.search);
app.route(base + '/inventory/:inventoryId(?!^adjustments$)').get(policy.isAllowed, inventoryCtrl.findById)
考虑输入 ../inventory/adjustments
问题在于,在第一个路由中,它正确匹配,但是控制器调用了next()
应该属于default route handler
我在其他地方设置的a 。但是相反,下一个路由处理程序也被匹配。
因此,现在我正尝试使用正则表达式从该路由处理程序中排除更具体的字符串,但现在它不匹配正确的输入,例如.../inventory/9039309309
。
谁能建议如何从第二条路线中排除第一条路线?(并且仍然允许默认处理程序调用next)。
谢谢。
如果inventoryId
始终为数字,则可以使匹配更具体:
app.route(base + '/inventory/:inventoryId(\\d+)', ...);
这样,它将不匹配"adjustments"
,并且路线也不会触发。
只要它可能不匹配,其他条件也可能相同"adjustments"
。
编辑:如果inventoryId
是MongoDB ObjectId
,则匹配将变为:
app.route(base + '/inventory/:inventoryId([a-fA-F\\d]{24})', ...);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句