えぐろぐ

https://twitter.com/eggpogg

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 {}

Modules | NestJS - A progressive Node.js framework