node.js - NodeJs routing-controllers: Πώς μπορώ να έχω δυναμική παράμετρο στην κλήση middleware
Έχω ακολουθήσει το σεμινάριο από:
- https://github.com/typestack/routing-controllers#creating-your-own-express-middleware
Αλλά δεν βρίσκω τρόπο να εισάγω δυναμικές παραμέτρους στην κλήση 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();
})
}
