Valores de configuración
Parte de la sección TypeScript y NestJS del Journey de Node.js de Coddy. Lección 12 de 24.
GET /tasks está a punto de devolver sus tareas de una página a la vez, como en la sección 3. La cantidad de tareas que caben en una página es una configuración, así que debe obtenerse del entorno en lugar de escribirse en el código. Un proveedor de valores registra cualquier valor con un nombre, llamado token.
providers: [
{ provide: 'CURRENCY', useValue: process.env.CURRENCY ?? 'EUR' },
],
constructor(@Inject('CURRENCY') private readonly currency: string) {}Una cadena no tiene una clase que Nest pueda leer del tipo del parámetro, así que @Inject('CURRENCY') indica el token. Debe escribirse igual en ambos lugares: un error tipográfico detiene la aplicación con el error "can't resolve dependencies". Los valores del entorno siempre son cadenas; conviértelos con Number() cuando necesites un número.
Desafío
FácilEste paso abre el proyecto preparado del curso de seguimiento de tareas con Nest, en lugar de los archivos de tu proyecto de Un segundo módulo (incluido src/stats/stats.module.ts). Tu trabajo anterior se queda en su propia lección. Lee los archivos proporcionados antes de editar src/tasks/tasks.module.ts. Esta copia contiene el servicio de Nest y el módulo de estadísticas, con el código de paginación proporcionado.
Este proyecto preparado de seguimiento de tareas añade paginación a GET /tasks. En src/tasks/tasks.module.ts, registra un proveedor de valor llamado PAGE_SIZE. Lee el valor del entorno, usa 10 como valor predeterminado cuando no esté presente y conviértelo en un número.
En src/tasks/tasks.controller.ts, elimina el campo pageSize fijo. Recibe el proveedor en el constructor como un campo numérico privado de solo lectura llamado pageSize. Usa @Inject con el nombre exacto del token; la importación y el código de paginación ya están proporcionados.
Pruébalo: Run proporciona PAGE_SIZE=2. GET /tasks devuelve dos elementos, la página 1, un total de 3 y 2 páginas. GET /tasks?page=2 devuelve la tarea restante. Sin esa variable de entorno, el valor predeterminado es diez elementos por página.
Pruébalo tú mismo
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 las lecciones de TypeScript y NestJS
1Fundamentos de Nest
Clases y métodosHola, NestRegistro de un controlador4Guards, filtros e interceptores
Guards2Proveedores
Entradas del constructorUn servicioRegistro de proveedoresPractica por tu cuenta: Playground de Express