Menu
CoddyTech

Valores de configuração

Parte da seção TypeScript e NestJS do Journey de Node.js da Coddy. Lição 12 de 24.

GET /tasks está prestes a retornar suas tarefas uma página por vez, como na seção 3. A quantidade de tarefas que cabe em uma página é uma configuração, então ela deve vir do ambiente, em vez de ser escrita diretamente no código. Um provedor de valores registra qualquer valor sob um nome, chamado token.

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

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

Uma string não tem uma classe que o Nest possa identificar pelo tipo do parâmetro, então @Inject('CURRENCY') nomeia o token. Ele deve ser escrito da mesma forma nos dois lugares: um erro de digitação interrompe o aplicativo com o erro "can't resolve dependencies". Os valores do ambiente são sempre strings; converta-os com Number() quando precisar de um número.

challenge icon

Desafio

Fácil

Esta etapa abre o projeto preparado de rastreador de tarefas Nest do curso, em vez dos arquivos do seu projeto de Um segundo módulo (incluindo src/stats/stats.module.ts). Seu trabalho anterior permanece na própria lição. Leia os arquivos fornecidos antes de editar src/tasks/tasks.module.ts. Esta cópia contém o serviço Nest e o módulo de estatísticas, com o código de paginação fornecido.

Este rastreador de tarefas preparado adiciona paginação a GET /tasks. Em src/tasks/tasks.module.ts, registre um provedor de valor chamado PAGE_SIZE. Leia o valor do ambiente, use 10 como padrão quando estiver ausente e converta-o em número.

Em src/tasks/tasks.controller.ts, remova o campo fixo pageSize. Receba o provedor no construtor como um campo numérico private readonly chamado pageSize. Use @Inject com o nome exato do token; a importação e o código de paginação são fornecidos.

Experimente: Executar fornece PAGE_SIZE=2. GET /tasks retorna dois itens, página 1, total 3 e 2 páginas. GET /tasks?page=2 retorna a tarefa restante. Sem essa variável de ambiente, o padrão é dez itens por página.

Experimente você mesmo

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

Todas as lições de TypeScript e NestJS

Pratique por conta própria: Playground de Express