본문 바로가기

TypeORM/NestJS & TypeORM 콜라보

NestJS TypeORM 설정

728x90

NestJS는 TypeORM을 지원한다. 그렇다면 SQL을 쓰지 않고 사용한다? 그런데 ORM이 무엇인 지 ? 

ORM이란?  " 객체와 관계형 DB의 데이터를 자동으로 매핑 해준다. "  

글로는 이해가 잘 가지 않아 실제 설정과 함께 매핑이 되는 과정을 보면 쉽게 이해가 가능하다.

 

1. 일단 node에서 TypeORM 을  다운받는다. 

NestJS의 공식문서를 보면 이렇게 나온다. TypeORM은 Typescript에 가정 최적화되어 있다고 알 수 있다. 

NestJS DOCS - Database 화면

 공식 홈페이지는 mysql로 예시를 들고 있다. 필자는 postgresql을 사용하기 때문에 npm install --save @nestjs/typeorm typeorm pg 이렇게 다운을 받았다. 상세하게 어떻게 설치하는 지에 대한 정보는 npm 홈피 

https://www.npmjs.com/package/typeorm 깃에서 자세한 정보를 얻을 수 있다. 

 

라이브러리들을 다운 받았다고 가정하고 본론으로 돌아와서 설정을 시작하겠다. 

[app.module.ts]

import { Module } from '@nestjs/common';
import { MemberController } from './member/member.controller';
import { AdminController } from './admin/admin.controller';
import { AdminService } from './admin/admin.service';
import { MemberService } from './member/member.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Member } from './member/entites/member.entity';
import { Admin } from 'typeorm';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'postgres',
      host: 'localhost',
      port: 5432,
      username: 'postgres',
      password: '', //postgresql은 비번을 묻지 않음
      database: 'NestJS_BackendDev',
      synchronize: true,
      logging: false,
      entities: [Member, Admin], 
    }),
  ],
  controllers: [MemberController, AdminController],
  providers: [AdminService, MemberService],
})
export class AppModule {}

[member.entity.ts]

import { CoreEntity } from 'src/common/entites/core.entity';
import { Column, Entity } from 'typeorm';
@Entity()
export class Member extends CoreEntity {
  
  @Column()
  userId: string;

  @Column()
  address : string;
}

공통으로 들어가는 컬럼들의 entity를 별도로 만들고 extends를 써서 확장하여 사용이 가능하다. 

[core.entity.ts]

import { CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm";
@Entity()
export class CoreEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @CreateDateColumn()
  createdAt: Date;

  @UpdateDateColumn()
  updatedAt: Date;

}

3곳의 설정을 마치고 DB로 가보자

pgAdmin4 화면

typeORM 넌 다 계획이 있구나 ? 테이블과 컬럼들이 자동으로 매핑되어 SQL을 솨라라 만들어지고 있다.   

다음 시간에는 typeORM을 본격적으로 사용해서 많은 정보를 알려 드리겠습니다. 감사합니다!  

728x90