Hi,
I'm tagging @vague crest , maybe you could help as the author of nestjs-cls library?
Is it possible to set up Proxy Provider in an interceptor and then inject it into Proxy Provider Factory?
When I'm trying to do that, I don't get data from an interceptor.
If I add resolveProxyProviders: false to ClsModule.forRoot, then it works. But then I cannot use the result of Proxy Provider Factory in another module.
In one module I have the following:
@Module({
imports: [
ClsModule.forRoot({
global: true,
middleware: { mount: true }, // should I put resolveProxyProviders: false here?
}),
ClsModule.forFeature(RequestContext)
]
exports: [ClsModule]
})
export class Module1 {}
In another module I have:
imports: [
Module1,
ClsModule.forFeatureAsync({
imports: [Module1],
provide: DATABASE_CONNECTION,
inject: [RequestContext],
useFactory: async (requestContext: RequestContext) => {
const tenantId = requestContext.tenantId;
console.log({tenantId}) // { tenantId: undefined } when resolveProxyProviders is true
return createDbConnection(tenantId);
},
}),
],
providers: [
{
provide: EXAMPLE_REPOSITORY_TOKEN,
useClass: ExampleRepository,
},
],
exports: [EXAMPLE_REPOSITORY_TOKEN],
})
export class Module2 {}
and I have this provider:
@Injectable()
export class ExampleRepository implements ExampleRepositoryInterface {
constructor(
private readonly logger: ApplicationLogger,
@Inject(DATABASE_CONNECTION) private readonly dbConnection: MockDatabaseConnectionInterface,
) {
this.dbConnection.getAll // undefined when resolveProxyProviders is false
}
}