NestJS のMiddleware 内でModuleのServiceを使用する
たいした話ではないけど、実装中にハマったのでメモ 📝
MiddlewareはInjectable
のデコレータをつけて、
NestMiddleware
をimplementsして、useメソッドを実装すれば使える
Injectしたい値は他のControllerなどと同じで、constructor
で設定をしてあげれば良い
// sample.middleware.ts @Injectable export class SampleMiddleware implements NestMiddleware { constructor(private readonly hogesService: HogseService) {} use(req: any, res: any, next: () => void) { this.hogesService.moge() next() } }
Middleware | NestJS - A progressive Node.js framework
外部で使用されるクラスはModule
デコレータの
exports
に渡してあげれば外部で使用させることができる
@Module({ exports: [HogseService], }) export class HogesModule {}