Kullanım
Sağlayıcı servisleri işaretle
Fabrika üzerinden çözümlenmesini istediğin injectable servislerde @FactoryProvider(factoryName, providerName) kullan.
providers/csv.service.ts
import { Injectable } from '@nestjs/common';
import { FactoryProvider } from 'nestjs-factory-pattern-module';
@Injectable()
@FactoryProvider('EXPORT_SERVICE', 'csv')
export class CsvProviderService {
// ...
}
Fabrikayı inject et
Modül, InjectFactory yardımcı decorator’ını export eder. Bu, temelde @Inject(factoryName) ile aynıdır.
my.service.ts
import { Injectable } from '@nestjs/common';
import {
FactoryService,
InjectFactory,
} from 'nestjs-factory-pattern-module';
@Injectable()
export class MyService {
constructor(
@InjectFactory('EXPORT_SERVICE')
private readonly factory: FactoryService<any>,
) {}
async getProvider(type: string) {
return this.factory.getProviderServiceAsync(type);
}
}
Notlar
- Sağlayıcı keşfi,
FactoryServiceoluşturulurken yapılır. - Bir
typeiçin servis bulunamazsagetProviderServiceAsynchata fırlatır.