Menu
CoddyTech

Konfigurationswerte

Teil des Abschnitts TypeScript und NestJS der Node.js-Journey von Coddy. Lektion 12 von 24.

GET /tasks wird seine Aufgaben bald seitenweise zurückgeben, wie in Abschnitt 3. Wie viele Aufgaben auf eine Seite passen, ist eine Einstellung und sollte daher aus der Umgebung stammen, statt im Code fest eingetragen zu sein. Ein Wertanbieter registriert einen beliebigen Wert unter einem Namen, der Token genannt wird.

providers: [
    { provide: 'CURRENCY', useValue: process.env.CURRENCY ?? 'EUR' },
],

constructor(@Inject('CURRENCY') private readonly currency: string) {}

Für einen String gibt es keine Klasse, die Nest aus dem Parametertyp auslesen könnte, daher benennt @Inject('CURRENCY') das Token. Es muss an beiden Stellen gleich geschrieben sein: Ein Tippfehler führt dazu, dass die App mit dem Fehler „can't resolve dependencies“ abbricht. Umgebungswerte sind immer Strings; wandle sie mit Number() um, wenn du eine Zahl benötigst.

challenge icon

Aufgabe

Einfach

Dieser Schritt öffnet das vorbereitete Nest-Projekt zur Aufgabenverwaltung des Kurses und nicht deine Projektdateien aus A Second Module (einschließlich src/stats/stats.module.ts). Deine frühere Arbeit bleibt in ihrer eigenen Lektion. Lies die bereitgestellten Dateien, bevor du src/tasks/tasks.module.ts bearbeitest. Diese Kopie enthält den Nest-Service und das Stats-Modul sowie den bereitgestellten Paginierungscode.

Diese vorbereitete Aufgabenverwaltung ergänzt die Paginierung für GET /tasks. Registriere in src/tasks/tasks.module.ts einen Wert-Provider namens PAGE_SIZE. Lies den Umgebungswert aus, verwende den Standardwert 10, wenn er fehlt, und wandle ihn in eine Zahl um.

Entferne in src/tasks/tasks.controller.ts das fest eingetragene Feld pageSize. Übernimm den Provider im Konstruktor als privates, schreibgeschütztes numerisches Feld namens pageSize. Verwende @Inject mit dem exakten Token-Namen; der Import und der Paginierungscode sind bereits vorhanden.

Probiere es aus: „Ausführen“ stellt PAGE_SIZE=2 bereit. GET /tasks gibt zwei Einträge, Seite 1, insgesamt 3 und 2 Seiten zurück. GET /tasks?page=2 gibt die verbleibende Aufgabe zurück. Ohne diese Umgebungsvariable beträgt der Standardwert zehn Einträge pro Seite.

Probier es selbst

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 {}

Alle Lektionen in TypeScript und NestJS

Übe selbstständig: Express-Playground