Menu
CoddyTech

Значения конфигурации

Часть раздела TypeScript и NestJS путешествия по Node.js на Coddy. Урок 9 из 17.

Размер страницы — это настройка, поэтому её следует получать из окружения, а не прописывать в контроллере. Провайдер значений регистрирует любое значение под именем, которое называется токеном.

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

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

У строки нет класса, который Nest мог бы определить по типу параметра, поэтому @Inject('CURRENCY') задаёт имя токена. В обоих местах оно должно быть написано одинаково: опечатка остановит приложение с ошибкой «не удаётся разрешить зависимости». Значения окружения всегда являются строками; преобразуйте их с помощью Number(), когда нужно число.

challenge icon

Задание

Легко
  • Зарегистрируй PAGE_SIZE в TasksModule: process.env.PAGE_SIZE как число, значение 10, если оно не задано. В этом уроке установи значение 2.
  • GET /tasks возвращает { items, page, total, pages }; ?page=2 возвращает следующую страницу, а фильтрация по-прежнему выполняется по done.
  • Отправь запросы GET /tasks, GET /tasks?page=2, затем GET /tasks?page=9.

Попробуйте сами

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

Все уроки раздела TypeScript и NestJS