Custom Providers: useValue, useClass, useFactory și useExisting în NestJS

core NestJS 10.x / TypeScript 5+ Q&A / Distribuie cod

Definirea flexibilă a providerilor în module: injectarea de constante, înlocuirea dinamică a claselor și fabrici asincrone cu useFactory.

Sintaxă
{ provide: 'CONFIG', useValue: {...} } / { provide: Service, useFactory: (...) => ... }

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 un MockStorageService în loc de S3StorageService).
  • 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 {}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Custom Providers: useValue, useClass, useFactory și useExisting

Ai o nelămurire despre utilizarea comenzii Custom Providers: useValue, useClass, useFactory și useExisting sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.