node.js - NodeJs routing-controllers:我如何在中间件调用中添加动态参数
我已经按照以下教程操作:
- https://github.com/typestack/routing-controllers#creating-your-own-express-middleware
但是我找不到在 @UseBefore/@UseAfter 中间件调用中注入动态参数的方法,像这样:
@Get("/something/:id")
@UseBefore(checkPermission(['canReadThis','canWriteThis']))
getOne(@Param("id") id: number) {
// ...
}
有人能指导我做这个吗?
我找到了这个:
- https://github.com/typestack/routing-controllers/issues/338#issuecomment-348169164
但是我不知道如何处理来自 Context “Class”和“{req, resp, next}”的数据,就像这样
function loggingMiddleware(request: any, response: any, next?: (err?: any) => any): any {
console.log('do something...');
next();
}
答案#1
终于发现
我的中间件:
@UseBefore((request: any, response: any, next: Function) =>
PermissionsChecker(request, response, next)({
permissions: ['ONE_PERMISSION', 'ANOTHER_ONE']
})
)
我的处理器函数
export const PermissionsChecker = (request: any, response: any, next: Function) =>
async ({ permissions }: { permissions: string[] }): Promise<any> => {
// ... do something
}
答案#2
试试这个
function executeMiddlewareList (middlewareList, req, res, next) {
async.eachSeries(middlewareList, function(middleware,callback) {
middleware.bind(null,req,res,callback)()
}, function(err) {
if (err) return res.status(500).json({error: err});
next();
})
}
