我在文档中找不到答案,我希望有办法做我需要的。我有一些快速路线:
app.post( '/submit-agency-event' , eventService.submitEvent );
app.post( '/submit-question' , formService.submitQuestion );
app.post( '/submit-information-request' , formService.submitInformationRequest );
app.post( '/social-worker-register-family' , familyService.registerFamily );
其中每个路由使用中间件文件中的函数来处理请求。我想将一个路由限制为只有几个userTypes(存储在req.user.userType
上)。我想设置类似以下的路线:
app.post( '/social-worker-register-child' , middleware.requireUsersOfType( ['admin, social worker'] ), childService.registerChild );
然后使用函数requireUsersOfType()
在调用childService.registerChild()
之前处理处理和任何所需的重定向。
exports.requireUsersOfType = ( req, res, next, userTypesArray ) => {
// processing
};
我似乎无法弄清楚如何将参数传递给requireUsersOfType()
函数。有谁知道如何做到这一点?
答案 0 :(得分:0)
您可以使用Closures:
闭包是函数和词汇环境的结合 宣布该职能的地方。
示例:
exports.requireUsersOfType = (userTypesArray) => {
return function(req, res, next) => {
// your code...
}
};
答案 1 :(得分:0)
虽然不是最优雅的解决方案,如果你不能像其他人所建议的那样让它工作,这应该可以解决问题:
app.post( '/social-worker-register-child', function( req, res, next ) { middleware.requireUsersOfType( req, res, next, userTypes = ['admin, social worker'] ); }, childService.registerChild );
然后,您应该可以根据需要在中间件中进行处理:
exports.requireUsersOfType = ( req, res, next, userTypesArray ) => {
// processing
};