Menu
CoddyTech

Valeurs de configuration

Fait partie de la section TypeScript et NestJS du Journey Node.js de Coddy. Leçon 12 sur 24.

GET /tasks est sur le point de renvoyer ses tâches une page à la fois, comme dans la section 3. Le nombre de tâches par page est un paramètre : il doit donc provenir de l’environnement plutôt que d’être inscrit dans le code. Un fournisseur de valeur enregistre une valeur sous un nom appelé jeton.

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

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

Une chaîne n’a pas de classe que Nest puisse déduire du type du paramètre ; @Inject('CURRENCY') sert donc à nommer le jeton. Il doit être écrit de la même façon aux deux endroits : une faute de frappe interrompt l’application avec l’erreur « impossible de résoudre les dépendances ». Les valeurs d’environnement sont toujours des chaînes ; convertissez-les avec Number() lorsque vous avez besoin d’un nombre.

challenge icon

Défi

Facile

Cette étape ouvre le projet de suivi des tâches Nest préparé pour le cours, plutôt que les fichiers de votre projet de Un deuxième module (y compris src/stats/stats.module.ts). Votre travail précédent reste dans sa propre leçon. Lisez les fichiers fournis avant de modifier src/tasks/tasks.module.ts. Cette copie contient le service Nest et le module de statistiques, ainsi que le code de pagination fourni.

Ce projet de suivi des tâches préparé ajoute la pagination à GET /tasks. Dans src/tasks/tasks.module.ts, enregistrez un fournisseur de valeur nommé PAGE_SIZE. Lisez la valeur d’environnement, utilisez 10 par défaut si elle est absente et convertissez-la en nombre.

Dans src/tasks/tasks.controller.ts, supprimez le champ pageSize fixe. Recevez le fournisseur dans le constructeur sous la forme d’un champ numérique private readonly nommé pageSize. Utilisez @Inject avec le nom exact du jeton ; l’importation et le code de pagination sont fournis.

Essayez : Run fournit PAGE_SIZE=2. GET /tasks renvoie deux éléments, la page 1, un total de 3 et 2 pages. GET /tasks?page=2 renvoie la tâche restante. Sans cette variable d’environnement, la valeur par défaut est de dix éléments par page.

Essayez vous-même

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

Toutes les leçons de TypeScript et NestJS

Entraînez-vous par vous-même : Playground Express