Wartości konfiguracji
Część sekcji TypeScript i NestJS ścieżki Node.js w Coddy. Lekcja 12 z 24.
GET /tasks ma wkrótce zwracać zadania strona po stronie, tak jak w sekcji 3. Liczba zadań mieszczących się na stronie jest ustawieniem, więc powinna pochodzić ze środowiska, a nie być wpisana w kodzie. Dostawca wartości rejestruje dowolną wartość pod nazwą zwaną tokenem.
providers: [
{ provide: 'CURRENCY', useValue: process.env.CURRENCY ?? 'EUR' },
],
constructor(@Inject('CURRENCY') private readonly currency: string) {}Łańcuch znaków nie ma klasy, którą Nest mógłby odczytać z typu parametru, dlatego @Inject('CURRENCY') określa token. Musi być zapisany identycznie w obu miejscach: literówka zatrzymuje aplikację i powoduje błąd „can't resolve dependencies”. Wartości środowiskowe są zawsze łańcuchami znaków; gdy potrzebujesz liczby, przekonwertuj je za pomocą Number().
Wyzwanie
ŁatwyTen krok otwiera przygotowany projekt śledzenia zadań w Nest w ramach kursu, a nie pliki projektu z lekcji Drugi moduł (w tym src/stats/stats.module.ts). Twoja wcześniejsza praca pozostaje w swojej lekcji. Przeczytaj dostarczone pliki przed edycją src/tasks/tasks.module.ts. Ta kopia zawiera usługę Nest i moduł statystyk, a kod stronicowania jest już dostarczony.
Ten przygotowany moduł śledzenia zadań dodaje stronicowanie do GET /tasks. W src/tasks/tasks.module.ts zarejestruj dostawcę wartości o nazwie PAGE_SIZE. Odczytaj wartość ze środowiska, a jeśli jej nie ma, użyj domyślnie wartości 10 i przekonwertuj ją na liczbę.
W src/tasks/tasks.controller.ts usuń stałe pole pageSize. Odbierz dostawcę w konstruktorze jako prywatne pole tylko do odczytu typu liczbowego o nazwie pageSize. Użyj @Inject z dokładną nazwą tokenu; import i kod stronicowania są już dostarczone.
Wypróbuj: Run ustawia PAGE_SIZE=2. GET /tasks zwraca dwa elementy, stronę 1, łączną liczbę 3 i 2 strony. GET /tasks?page=2 zwraca pozostałe zadanie. Bez tej zmiennej środowiskowej domyślna wartość wynosi dziesięć elementów na stronę.
Spróbuj swoich sił
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 {}
Wszystkie lekcje w sekcji TypeScript i NestJS
Poćwicz samodzielnie: Edytor online Express