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.
Desafio
FácilEsta 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
1Fundamentos do Nest
Classes e métodosOlá, NestRegistrando um controller4Guardas, filtros e interceptadores
Guardas2Provedores
Entradas do construtorUm serviçoRegistrando provedoresPratique por conta própria: Playground de Express