Menu
CoddyTech

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.

challenge icon

Sfida

Facile

Questo 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

Esercitati da solo: Playground Express