Sintaxa standard providers: [MyService] este doar o prescurtare pentru { provide: MyService, useClass: MyService }. NestJS oferă o suită completă de Custom Providers pentru scenarii avansate:
useValue: Injectează o valoare constantă sau un obiect de configurare gata creat (esențial pentru mock-uri în teste).useClass: Permite rezolvarea dinamică a unei clase diferite (de exemplu folosind unMockStorageServiceîn loc deS3StorageService).useFactory: Creează instanța printr-o funcție fabrică ce poate primi alte servicii ca argumente (inject: [...]) și poate fi chiar asincronă (async/await).useExisting: Creează un alias către un provider existent deja în context.
Exemplu: Factory Provider asincron cu dependențe injectate
import { Module } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@Module({
providers: [
{
provide: 'DATABASE_CONNECTION',
useFactory: async (configService: ConfigService) => {
const dbUri = configService.get('DATABASE_URL');
console.log(`Conectare asincronă la baza de date: ${dbUri}`);
// Simulăm deschiderea conexiunii:
return { isConnected: true, pool: 20 };
},
inject: [ConfigService],
},
],
exports: ['DATABASE_CONNECTION'],
})
export class DatabaseModule {}
Întrebări & Exemple de Cod:
Custom Providers: useValue, useClass, useFactory și useExistingAi o nelămurire despre utilizarea comenzii
Custom Providers: useValue, useClass, useFactory și useExistingsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.