任何方式有条件地跳过中间件与快递next()?

所以例如 –

//Functions var validationCheck = function(req, res, next){ if(req.session.userId && req.session.token) next('validationCatch') //Is this possible to skip middleware if not needed? else next() } var getUserId = function(req, res, next){ req.session.userId = DB.getUserId next() } var getToken = function(req, res, next){ req.session.token = DB.getToken next() } //a catcher function to direct to next function depending on route var validationCatch = function(req, res, next){ next() } //Routes app.get(api + '/feature1', validationCheck, getUserId, getToken, validationCatch, feature1) app.get(api + '/feature2', validationCheck, getUserId, getToken, validationCatch, feature2) 

我的目标是跳过不必要的中间件,如果信息已经从以前的路由caching。 所以在上面的例子中,如果feature1已经被调用,feature2不必inputgetUserId和getToken,从而使响应更快。

如果不可能,请说明一个更有效的体系结构来处理重复的validation过程。 谢谢

而不是直接注册callback,如果需要,只需在validationCheck调用它们。 这是getUserId一个简单例子:

 var validationCheck = function(req, res, next){ if(req.session.userId) next() else { getUserId(req, res, function(err){ next(err) }) } }