Nest.js
Nest.js - TypeORM 설정
jaewoo
2023. 11. 26. 16:09
TypeORM 은 Node.js 환경에서 사용되는 객체 관계 매핑 라이브러리이다.
Nest.js에서 적용하는 방법
1. npm 으로 typeorm 라이브러리 다운
2. AppModule에 TypeOrmModule.forRoot({}); 설정 (db 연결정보 및 엔티티 위치)
3. Entity 정의
4. 사용하려는 모듈에 TypeOrmModule.forFeature([엔티티]) 등록
5. 해당 모듈에 속한 클래스 생성자에서 @InjectRepository(엔티티) 를 통해 해당 엔티티에 대한 레포지토리를 주입 받아 사용
코드
1. TypeORM 및 데이터베이스 드라이버 설치
npm install --save @nestjs/typeorm typeorm mysql
2. TypeORM 모듈 등록
- AppModle 에서 TypeOrmModule을 임포트하고 설정한다. forRoot 메소드를 사용하여 데이터베이스 연결 설정
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: '사용자',
password: '비번',
database: '스키마',
entities: [__dirname + '/**/*.entity{.ts,.js}'], // 엔티티 파일 경로
synchronize: true,
}),
// 다른 모듈들
],
})
export class AppModule{}
3. Entity 정의
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class User{
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
email: string;
}
4. Repository 사용
- 레포지토리를 다른 모듈에서 사용하려면 사용하려는 모듈 클래스에 TypeOrmModue.forFeature([엔티티]) 를 해줘야한다.
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './entitys/user.entity';
import { UserService } from './user.service';
@Module({
imports: [TypeOrmModue.forFeature([User])],
providers:[UserService],
})
export class UserModule{}
5. Service 클래스에서 @InjectRepository 를 통해 주입받아 사용
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './entitys/user.entity';
@Injectable()
export class UserService{
constructor(
@InjectRepository(User)
private userRepository: Repository<User>,
){}
}