Menu
CoddyTech

Yapılandırma Değerleri

Coddy'nin Node.js Journey'sinin TypeScript ve NestJS bölümünün bir parçası. Ders 12 / 24.

GET /tasks, 3. bölümde olduğu gibi görevlerini her seferinde bir sayfa olacak şekilde döndürmek üzere. Bir sayfaya kaç görevin sığacağı bir ayardır; bu nedenle koda yazılmak yerine ortamdan alınmalıdır. Bir değer sağlayıcısı, herhangi bir değeri token adı verilen bir ad altında kaydeder.

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

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

Bir dizenin, Nest'in parametre türünden okuyabileceği bir sınıfı yoktur; bu nedenle @Inject('CURRENCY') token'ı adlandırır. Her iki yerde de aynı şekilde yazılmalıdır: bir yazım hatası uygulamayı "bağımlılıklar çözümlenemiyor" hatasıyla durdurur. Ortam değerleri her zaman dizgedir; bir sayıya ihtiyacınız olduğunda bunları Number() ile dönüştürün.

challenge icon

Görev

Kolay

Bu adım, A Second Module dersindeki proje dosyaların yerine kurs için hazırlanmış Nest görev takipçisi projesini açar ( src/stats/stats.module.ts dâhil). Önceki çalışmaların kendi dersinde kalır. src/tasks/tasks.module.ts dosyasını düzenlemeden önce sağlanan dosyaları oku. Bu kopyada Nest servisi ve istatistikler modülü bulunur; sayfalama kodu da sağlanmıştır.

Bu hazırlanmış görev takipçisi, GET /tasks uç noktasına sayfalama ekler. src/tasks/tasks.module.ts dosyasında PAGE_SIZE adlı bir değer sağlayıcısı kaydet. Ortam değişkeninin değerini oku, yoksa varsayılan olarak 10 kullan ve sayıya dönüştür.

src/tasks/tasks.controller.ts dosyasında sabit pageSize alanını kaldır. Sağlayıcıyı kurucuda pageSize adlı private readonly sayısal alan olarak al. Tam belirteç adını kullanarak @Inject kullan; içe aktarma ve sayfalama kodu sağlanmıştır.

Deneyin: Run, PAGE_SIZE=2 değerini ayarlar. GET /tasks, iki öğe, 1. sayfa, toplam 3 ve 2 sayfa döndürür. GET /tasks?page=2 kalan görevi döndürür. Bu ortam değişkeni olmadan, her sayfada varsayılan olarak on öğe gösterilir.

Kendin dene

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 ve NestJS bölümündeki tüm dersler

Kendi başına pratik yap: Express playground