Valori di configurazione
Fa parte della sezione TypeScript e NestJS del percorso Node.js di Coddy. Lezione 12 di 24.
GET /tasks sta per restituire le sue attività una pagina alla volta, come nella sezione 3. Il numero di attività che entrano in una pagina è un'impostazione, quindi dovrebbe provenire dall'ambiente anziché essere inserito nel codice. Un fornitore di valori registra un qualsiasi valore con un nome, chiamato token.
providers: [
{ provide: 'CURRENCY', useValue: process.env.CURRENCY ?? 'EUR' },
],
constructor(@Inject('CURRENCY') private readonly currency: string) {}Una stringa non ha una classe che Nest possa ricavare dal tipo del parametro, quindi @Inject('CURRENCY') indica il token. Deve essere scritto nello stesso modo in entrambi i punti: un errore di battitura blocca l'app con l'errore "can't resolve dependencies". I valori dell'ambiente sono sempre stringhe; convertili con Number() quando ti serve un numero.
Sfida
FacileQuesto passaggio apre il progetto preparato del corso per il monitoraggio delle attività con Nest, invece dei file del tuo progetto di Un secondo modulo (incluso src/stats/stats.module.ts). Il lavoro svolto in precedenza resta nella sua lezione. Leggi i file forniti prima di modificare src/tasks/tasks.module.ts. Questa copia contiene il servizio Nest e il modulo delle statistiche, con il codice per la paginazione già fornito.
Questo progetto preparato per il monitoraggio delle attività aggiunge la paginazione a GET /tasks. In src/tasks/tasks.module.ts, registra un provider di valore denominato PAGE_SIZE. Leggi il valore dell'ambiente, usa 10 come valore predefinito se assente e convertilo in un numero.
In src/tasks/tasks.controller.ts, rimuovi il campo pageSize fisso. Ricevi il provider nel costruttore come campo numerico privato di sola lettura denominato pageSize. Usa @Inject con il nome esatto del token; l'importazione e il codice di paginazione sono già forniti.
Prova: l'esecuzione imposta PAGE_SIZE=2. GET /tasks restituisce due elementi, pagina 1, totale 3 e 2 pagine. GET /tasks?page=2 restituisce l'attività rimanente. Senza quella variabile d'ambiente, il valore predefinito è di dieci elementi per pagina.
Provalo tu
import { Module } from '@nestjs/common';
import { ClockService } from './clock.service';
import { TasksController } from './tasks.controller';
import { TasksService } from './tasks.service';
@Module({
controllers: [TasksController],
providers: [TasksService, ClockService],
exports: [TasksService],
})
export class TasksModule {}
Tutte le lezioni di TypeScript e NestJS
1Basi di Nest
Classi e metodiCiao, NestRegistrare un controller4Guardie, filtri e intercettori
Guardie2Provider
Input del costruttoreUn servizioRegistrazione dei providerEsercitati da solo: Playground Express