728x90
NestJS는 TypeORM을 지원한다. 그렇다면 SQL을 쓰지 않고 사용한다? 그런데 ORM이 무엇인 지 ?
ORM이란? " 객체와 관계형 DB의 데이터를 자동으로 매핑 해준다. "
글로는 이해가 잘 가지 않아 실제 설정과 함께 매핑이 되는 과정을 보면 쉽게 이해가 가능하다.
1. 일단 node에서 TypeORM 을 다운받는다.
NestJS의 공식문서를 보면 이렇게 나온다. TypeORM은 Typescript에 가정 최적화되어 있다고 알 수 있다.
공식 홈페이지는 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로 가보자
typeORM 넌 다 계획이 있구나 ? 테이블과 컬럼들이 자동으로 매핑되어 SQL을 솨라라 만들어지고 있다.
다음 시간에는 typeORM을 본격적으로 사용해서 많은 정보를 알려 드리겠습니다. 감사합니다!
728x90