inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)

[실습] TypeORM 마이그레이션 - DB 컬럼 추가 해보기

NestJS, TypeORM의 typeorm.ts에서 autoLoadEntities: true와 entities: []의 공존

해결된 질문

235

yavathar

작성한 질문수 3

0

안녕하세요.

TypeORM 마이그레이션 실습에서 아래와 같은 typeorm.ts 파일을 작성했습니다.

import { registerAs } from '@nestjs/config';
import { DataSource, DataSourceOptions } from 'typeorm';

const config = {
  type: 'postgres',
  host: `${process.env.DB_HOST || 'localhost'}`,
  port: parseInt(`${process.env.DB_PORT || '5432'}`, 10),
  username: `${process.env.DB_USERNAME || 'test'}`,
  password: `${process.env.DB_PASSWORD || 'test'}`,
  database: `${process.env.DB_DATABASE || 'inflearn'}`,
  entities: ['dist/**/**/*.entity{.ts,.js}'],
  migrations: ['dist/migrations/*{.ts,.js}'],
  autoLoadEntities: true,
  synchronize: false,
};

export default registerAs('typeorm', () => config);
export const connectionSource = new DataSource(config as DataSourceOptions);

 

이 때, autoLoadEntities: true 항목이 있음에도, entities: [] 항목이 있어야 할 필요가 있나요? 없어도 코드 동작에 차이가 없는 것인가요?

앞선 강의에서 autoLoadEntities: true 인 경우, entities: []를 따로 설정하지 않아도 된다는 내용이 있었던 것 같아서 헷갈립니다.

감사합니다.

aws postgresql nestjs typeorm aws-rds

답변 1

0

로펀

안녕하세요! 좋은 질문 감사합니다 😊

결론부터 말씀드리면,

autoLoadEntities: true를 사용하는 경우, entities는 NestJS 애플리케이션 내에서 실행할 때는 생략 가능합니다.

하지만 typeorm CLI나 DataSource를 사용하는 마이그레이션 실행 시에는 entities가 필수입니다.

 

이유 설명

  • autoLoadEntities: true는 NestJS 런타임 환경에서만 작동합니다.

     

    • TypeOrmModule.forFeature()로 등록된 엔티티들을 자동으로 감지합니다.

    • 이는 NestJS의 DI 컨테이너를 활용하기 때문에 NestJS 앱 실행 시에만 적용됩니다.

     

  • 반면, typeorm CLI나 DataSource를 직접 사용할 때는 Nest 컨텍스트가 없기 때문에,

     

const connectionSource = new DataSource(config);
  • 이 config에 entities 배열이 명시적으로 있어야 마이그레이션이 정상 작동합니다.

     

결론적으로

  • autoLoadEntities: true → NestJS 앱 실행 시 유용

  • entities: ['dist/**/*.entity{.ts,.js}'] → 마이그레이션 및 CLI 명령 실행 시 필수

 

따라서 autoLoadEntities: true와 entities: [...]를 함께 사용하는 것이 실전에서는 안전한 조합입니다. 특히 저희처럼 typeorm 마이그레이션을 사용하고 있다면 entities를 생략하지 않아야 정상동작을 합니다. 이해 되셨을까요?

1

yavathar

이해되었습니다. 완벽한 답변 감사합니다!

node.js 설치 관련 질문 드립니다

0

15

1

Cursor 설정

0

20

1

맥북으로 RDP 연결 질문

0

27

2

라우팅 테이블 설정 중 궁금한게 있습니다.

0

33

1

수강 연장 가능하면 요청 드립니다.

0

21

2

JPA Repository 질문이 있습니다!

1

32

2

페이지네이션 처리를 쿼리에서 하는 방식 질문

1

35

1

(강의 6분 50초 부분) Workspace 안에 index.html이 비어있음

0

31

2

Route53 정책과 loadbalancer 차이점이 궁금합니다.

0

30

2

강의순서가 바뀌어 있습니다.

0

33

1

강의사이트 접속 에러 문의 드립니다.

0

27

2

build.zip 퍄일이 없습니다.

0

39

1

무중단 배포

0

56

2

workflows/deploy.yml 궁금증

0

52

2

강의 앞 부분이 잘려있는 것 같습니다.

0

33

2

어렵네요

0

19

1

db연결이 다되었는데 tables에 posts 테이블이 안생겨요

0

70

2

SQL Sheell

0

51

1

PostRepository 구현

0

44

1

Nest.js와 레이어드 아키텍처

0

78

1

TypeORM 마이그레이션

0

78

2

터미널에서 자동완성 되는건 어떤 프로그램인가요?

0

308

2

module에서 import, export, provider, controller..

0

131

2

슬랙채널 가입이 안됩니다.

0

322

2