관리 메뉴

bright jazz music

[nestjs] TypeORM을 사용해 DB에 테이블 생성 본문

Framework/NestJS

[nestjs] TypeORM을 사용해 DB에 테이블 생성

bright jazz music 2024. 12. 21. 18:52

1. main.ts에서 validation pipe 활성화

// 스프링부트의 @SpringBootApplication가 붙어있는 파일(메인함수가 있는 파일)에 대응되는 파일

// 유효성 검사 파이프 추가
import { ValidationPipe } from '@nestjs/common';


import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  /*  app.useGlobalPipes(new ValidationPipe()); // 전역 유효성 검사 파이프 추가*/
  app.useGlobalPipes(new ValidationPipe({
    whitelist: true, // DTO에 정의되지 않은 속성은 제거
    forbidNonWhitelisted: true, // DTO에 정의되지 않은 속성이 있으면 요청 자체를 막음
    transform: true, // 요청 데이터를 DTO 클래스의 인스턴스로 변환
  }));
  await app.listen(process.env.PORT ?? 3000);
}
bootstrap();


2.  프로젝트 구동

아래 명령어를 사용하여 애플리케이션을 실행하면 TypeORM이 자동으로 테이블을 생성한다.

 

pnpm start:dev

 

아래와 같이 로그가 기록된다.

[오후 5:06:26] Starting compilation in watch mode...

[오후 5:06:29] Found 0 errors. Watching for file changes.

[Nest] 5556  - 2024. 12. 21. 오후 5:06:31     LOG [NestFactory] Starting Nest application...
[Nest] 5556  - 2024. 12. 21. 오후 5:06:31     LOG [InstanceLoader] AppModule dependencies initialized +18ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:31     LOG [InstanceLoader] TypeOrmModule dependencies initialized +1ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:31     LOG [InstanceLoader] ConfigHostModule dependencies initialized +0ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:31     LOG [InstanceLoader] ConfigModule dependencies initialized +1ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +427ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [InstanceLoader] TypeOrmModule dependencies initialized +1ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [InstanceLoader] AuthModule dependencies initialized +1ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [InstanceLoader] UsersModule dependencies initialized +0ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [RoutesResolver] UsersController {/users}: +8ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [RouterExplorer] Mapped {/users, GET} route +3ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [RouterExplorer] Mapped {/users/:id, GET} route +1ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [RouterExplorer] Mapped {/users/:id, PUT} route +1ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [RouterExplorer] Mapped {/users/:id, DELETE} route +0ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [RoutesResolver] AuthController {/auth}: +0ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [RouterExplorer] Mapped {/auth/login, POST} route +0ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [RouterExplorer] Mapped {/auth/register, POST} route +1ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [RouterExplorer] Mapped {/auth/logout, POST} route +0ms
[Nest] 5556  - 2024. 12. 21. 오후 5:06:32     LOG [NestApplication] Nest application successfully started +3ms

 

3.  psql로 확인

\c test_db
\dt
SELECT * FROM "user";

 

현재 설정에서는 synchronize: true로 되어있어서 엔티티 정의를 기반으로 자동으로 테이블이 생성된다.

Comments