Menu
CoddyTech

설정값

Coddy Node.js 여정의 TypeScript와 NestJS 섹션에 포함된 레슨. 24개 중 12번째.

GET /tasks는 3절에서처럼 작업을 한 번에 한 페이지씩 반환하려고 합니다. 페이지에 들어가는 작업 수는 설정값이므로 코드에 직접 입력하는 대신 환경에서 가져와야 합니다. 값 공급자는 토큰이라고 하는 이름으로 어떤 값이든 등록합니다.

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

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

문자열에는 Nest가 매개변수의 타입에서 읽을 클래스가 없으므로, @Inject('CURRENCY')로 토큰을 지정합니다. 두 곳에서 철자가 같아야 합니다. 오타가 있으면 "can't resolve dependencies" 오류와 함께 앱이 중단됩니다. 환경 변수 값은 항상 문자열이므로 숫자가 필요할 때는 Number()로 변환하세요.

challenge icon

챌린지

쉬움

이 단계에서는 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 필드를 제거하세요. 생성자에서 제공자를 private readonly 숫자 필드인 pageSize로 받으세요. 정확한 토큰 이름과 함께 @Inject를 사용하세요. 가져오기와 페이지 매김 코드는 제공되어 있습니다.

직접 실행해 보세요. 실행 시 PAGE_SIZE=2가 설정됩니다. GET /tasks는 항목 2개, 페이지 1, 전체 3개, 페이지 수 2를 반환합니다. GET /tasks?page=2는 남은 작업을 반환합니다. 이 환경 변수가 없으면 페이지당 기본 항목 수는 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 플레이그라운드