設定値
CoddyのNode.jsジャーニー「TypeScriptとNestJS」セクションの一部。レッスン 12/24。
GET /tasks は、セクション 3 と同様に、タスクを一度に 1 ページずつ返すようにします。1 ページに収まるタスク数は設定値なので、コードに直接記述するのではなく、環境から取得する必要があります。値プロバイダーは、トークンと呼ばれる名前で任意の値を登録します。
providers: [
{ provide: 'CURRENCY', useValue: process.env.CURRENCY ?? 'EUR' },
],
constructor(@Inject('CURRENCY') private readonly currency: string) {}文字列には、Nest がパラメーターの型から読み取れるクラスがないため、@Inject('CURRENCY')でトークンを指定します。両方の場所で同じ綴りにする必要があります。誤字があると、「can't resolve dependencies」エラーでアプリが停止します。環境変数の値は常に文字列なので、数値が必要なときはNumber()で変換します。
チャレンジ
簡単このステップでは、A Second Module(src/stats/stats.module.tsを含む)のプロジェクトファイルではなく、コース用に準備されたNestタスクトラッカープロジェクトを開きます。これまでの作業は、それぞれのレッスンに残っています。src/tasks/tasks.module.tsを編集する前に、用意されたファイルを読んでください。このプロジェクトにはNestサービスと統計モジュールが含まれており、ページネーションのコードも用意されています。
この準備済みのタスクトラッカーでは、GET /tasksにページネーションを追加します。src/tasks/tasks.module.tsで、PAGE_SIZEという名前の値プロバイダーを登録してください。環境変数の値を読み取り、設定されていない場合は10を既定値とし、数値に変換します。
src/tasks/tasks.controller.tsでは、固定のpageSizeフィールドを削除してください。コンストラクターで、pageSizeという名前のprivate readonly数値フィールドとしてプロバイダーを受け取ります。正確なトークン名を指定して@Injectを使ってください。インポートとページネーションのコードは用意されています。
試してみましょう:「プレイ」を実行すると、PAGE_SIZE=2が設定されます。GET /tasksは2件の項目、1ページ目、合計3件、全2ページを返します。GET /tasks?page=2は残りのタスクを返します。この環境変数がない場合、1ページあたりの既定の項目数は10件です。
自分で試してみよう
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とNestJSのすべてのレッスン
自分で練習してみよう: Expressプレイグラウンド