imagine que temos RequestResponseInterceptor e typeorm.forFeature([RequestResponseEntity]) em RequestResponseModule e eu uso este SomeEntityRepository no interceptor. então eu quero usar este interceptor no controlador do SomeModule como devo fazer isso?
eu tenho assim:
export class RequestResponseModule {
static registerAsync(): DynamicModule {
return {
module: RequestResponseModule,
imports: [HttpModule, TypeOrmModule.forFeature([RequestResponseEntity])],
providers: [NasPhHttpService, RequestResponseInterceptor, RequestResponseScheduler],
exports: [NasPhHttpService, RequestResponseInterceptor],
};
}
}
E SomeModule se parece com isso:
@Module({
imports: [HttpModule, TypeOrmModule.forFeature([ExtPaymentKafkaEventDto]), RequestResponseModule.registerAsync()], providers: [SomeService, ExtPaymentRepository, ConfigService, SomeAuth], controllers: [SomeController], exports: [SomeService], }) export class SomeModule {}
e no controller eu uso assim:
@UseInterceptors(RequestResponseInterceptor)
mas tenho um erro que diz:
[Nest] 99697 - 08/17/2023, 6:21:50 PM ERROR [ExceptionHandler] Nest can't resolve dependencies of the RequestResponseInterceptor (?). Please make sure that the argument RequestResponseEntityRepository at index [0] is available in the SomeModule context.
Tentei não usar RequestResponseInterceptor como interceptor e apenas injetei no construtor e não me deu erro. Então talvez eu deva injetar de forma diferente?
Tentei não usar RequestResponseInterceptor como interceptor e apenas injetei no construtor e não me deu erro. Então talvez eu deva injetar de forma diferente?
Adicione o
TypeOrmModule
aoexports
deRequestResponseModule
para que sejaRequestResponseRepository
exportado, então você pode importar oRequestResponseModule
em qualquer módulo que tenha um controlador que você está usandoRequestResponseInterceptor
e ele funcionará como pretendido.Os aprimoradores não são um 1:1 perfeito com os provedores e não compartilham o escopo da instância da mesma forma que os provedores fazem por meio de módulos, portanto, você precisa fazer as coisas de maneira um pouco diferente