카테고리 없음

패스트캠퍼스 환급챌린지 34일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기

Laftel 2025. 4. 7. 16:07
반응형

***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다 
type orm을 사용하기 위해, 터미널에 명령어를 입력하여 설치하겠다.
pnpm i @nestjs/config joi @nestjs/typeorm typeorm pg
 
app.moudle.ts 변경사항과 이유

app.moudle.ts 파일을 아래처럼 변경한 이유를 알려줘
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { MovieModule } from './movie/movie.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [
    ConfigModule.forRoot(),
    TypeOrmModule.forRoot({
      type : process.env.DB_TYPE as "postgres",
      host : process.env.DB_HOST,
      port : parseInt("process.env.DB_PORT"),
      username : process.env.DB_USERNAME,
      password : process.env.DB_PASSWORD,
      database : process.env.DB_DATABASE,
      entities : [],
      synchronize : true,
    }),
    MovieModule],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

NestJS 애플리케이션에 데이터베이스 연동 (TypeORM) 및 환경 변수 관리 (ConfigModule) 기능을 추가하기 위함입니다. 각 변경 사항의 구체적인 이유는 다음과 같습니다.
1. import { TypeOrmModule } from '@nestjs/typeorm'; 추가:

  • 이유: NestJS에서 데이터베이스와 상호작용하기 위해 공식적으로 지원하는 TypeORM 모듈을 사용하기 위함입니다. TypeORM은 다양한 관계형 데이터베이스를 ORM(Object-Relational Mapping) 방식으로 쉽게 다룰 수 있도록 해줍니다.

2. import { ConfigModule } from '@nestjs/config'; 추가:

  • 이유: 애플리케이션의 환경 설정 (예: 데이터베이스 연결 정보, API 키 등)을 외부 파일이나 환경 변수를 통해 관리하고 NestJS 애플리케이션 내에서 쉽게 접근할 수 있도록 해주는 @nestjs/config 모듈을 사용하기 위함입니다. 이를 통해 설정 정보를 코드에 직접 하드코딩하는 것을 방지하고, 배포 환경별로 유연하게 설정을 관리할 수 있습니다.

3. imports: [...] 배열 내 변경 사항:

  • ConfigModule.forRoot() 추가:
    • 이유: @nestjs/config 모듈을 전역적으로 사용하기 위해 forRoot() 메서드를 호출하여 설정합니다. 이를 통해 애플리케이션 전체에서 환경 변수를 주입받아 사용할 수 있게 됩니다.
  • TypeOrmModule.forRoot({...}) 추가:
    • 이유: TypeORM을 사용하여 데이터베이스 연결을 설정하고 NestJS 애플리케이션과 통합하기 위함입니다. forRoot() 메서드 내의 객체는 데이터베이스 연결에 필요한 설정 정보들을 담고 있습니다.
      • type: process.env.DB_TYPE as "postgres": 사용할 데이터베이스의 종류를 환경 변수 DB_TYPE에서 읽어와 설정합니다. 여기서는 "postgres"로 명시적으로 타입 캐스팅했습니다.
      • host: process.env.DB_HOST: 데이터베이스 서버의 호스트 주소를 환경 변수 DB_HOST에서 읽어옵니다.
      • port: parseInt("process.env.DB_PORT"): 데이터베이스 서버의 포트 번호를 환경 변수 DB_PORT에서 읽어와 정수형으로 변환하여 설정합니다.
      • username: process.env.DB_USERNAME: 데이터베이스 접근 사용자 이름을 환경 변수 DB_USERNAME에서 읽어옵니다.
      • password: process.env.DB_PASSWORD: 데이터베이스 접근 비밀번호를 환경 변수 DB_PASSWORD에서 읽어옵니다.
      • database: process.env.DB_DATABASE: 사용할 데이터베이스 이름을 환경 변수 DB_DATABASE에서 읽어옵니다.
      • entities: []: TypeORM이 관리할 엔티티(데이터베이스 테이블과 매핑되는 클래스)들을 정의하는 배열입니다. 현재는 비어 있지만, 데이터베이스 테이블과 상호작용하는 모델 클래스를 여기에 추가해야 합니다.
      • synchronize: true: 개발 환경에서 데이터베이스 스키마를 자동으로 생성하거나 업데이트할지 여부를 설정합니다. 주의: 프로덕션 환경에서는 데이터 손실의 위험이 있으므로 false로 설정하는 것이 일반적입니다.

요약하자면, 위와 같은 app.module.ts 파일의 변경은 NestJS 애플리케이션이 다음과 같은 기능을 갖도록 하기 위함입니다.

  • 데이터베이스 연동: TypeORM을 통해 PostgreSQL 데이터베이스와 연결하고 데이터를 저장하고 조회할 수 있습니다.
  • 환경 변수 관리: dotenv와 같은 라이브러리를 사용하여 .env 파일 등에 정의된 환경 변수를 읽어와 애플리케이션 설정에 활용할 수 있습니다. 이를 통해 중요한 설정 정보를 코드에서 분리하고, 배포 환경별로 다른 설정을 적용할 수 있습니다.

따라서 이 변경 사항은 NestJS 애플리케이션이 데이터베이스를 사용하고 환경 설정에 따라 유연하게 동작하도록 기본적인 토대를 마련하는 중요한 단계라고 볼 수 있습니다. 이후에는 entities 배열에 데이터베이스 테이블과 매핑될 엔티티 클래스를 추가하고, MovieModule과 같은 다른 모듈에서 TypeORM을 사용하여 데이터베이스와 상호작용하는 로직을 구현하게 될 것입니다.



 

#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB
 

반응형