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>,
){}
}
'Nest.js' 카테고리의 다른 글
Nest.js - onModuleInit, onModuleDestroy 서버 실행과 종료시 실행되는 로직 구현 (0) | 2024.04.17 |
---|---|
Jest - Cannot find module (0) | 2024.03.17 |
Nest.js - Molecular 서비스 브로커 예제 (0) | 2023.12.18 |
Nest.js - Interceptor 로 로그 및 응답 데이터 변형하기 (1) | 2023.11.26 |