任何方式有条件地跳过中间件与快递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) }) } }