Nest.js는 TypeScript로 구축된 서버 애플리케이션을 위한 프레임워크이며, 데이터베이스와의 연동을 위해 TypeORM, Prisma, Sequelize 등 다양한 옵션이 제공됩니다. 이번 글에서는 Nest.js와 TypeORM을 사용하여 데이터베이스를 연동하는 방법에 대해 알아보겠습니다.
TypeORM 설정하기
TypeORM은 TypeScript와 JavaScript를 위한 ORM(Object-Relational Mapping) 라이브러리로, Nest.js 프로젝트에 TypeORM을 설치하고 설정하는 방법은 다음과 같습니다.
먼저, TypeORM과 PostgreSQL을 설치합니다.
npm install --save @nestjs/typeorm typeorm pg
다음으로, TypeOrmModule.forRoot()
를 사용하여 TypeORM 설정을 추가합니다. TypeOrmModule.forRoot()
는 TypeORM 모듈을 글로벌하게 설정하기 위해 사용됩니다.
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres',
host: 'localhost',
port: 5432,
username: 'postgres',
password: 'password',
database: 'nestjs',
entities: [],
synchronize: true,
}),
],
})
export class AppModule {}
위 예제에서는 PostgreSQL 데이터베이스에 연결하기 위한 설정을 보여주고 있습니다. 필요에 따라 다른 데이터베이스 엔진을 사용할 수 있습니다.
Entity 작성하기
Nest.js에서 TypeORM을 사용하기 위해서는 엔티티(Entity) 클래스를 작성해야 합니다. 엔티티 클래스는 데이터베이스 테이블을 나타내며, 이를 통해 TypeORM은 데이터베이스와의 상호작용을 처리합니다.
간단한 사용자(User) 엔티티를 작성하는 예제는 다음과 같습니다.
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
email: string;
}
위 예제에서는 @Entity()
데코레이터를 사용하여 엔티티로 선언하고, @PrimaryGeneratedColumn()
과 @Column()
데코레이터를 사용하여 각각 기본키와 컬럼을 정의합니다.
Repository 사용하기
마지막으로, TypeORM Repository를 사용하여 데이터베이스 연산을 수행할 수 있습니다. Repository는 엔티티에 대한 데이터베이스 작업을 추상화하는데 사용됩니다.
예를 들어, 사용자 엔티티에 접근하여 데이터를 조회하는 방법은 다음과 같습니다.
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';
@Injectable()
export class UserService {
constructor(
@InjectRepository(User)
private usersRepository: Repository<User>,
) {}
async findAll(): Promise<User[]> {
return this.usersRepository.find();
}
async findOne(id: number): Promise<User> {
return this.usersRepository.findOne(id);
}
}
위 예제에서는 @InjectRepository(User)
데코레이터를 이용하여 UserRepository를 주입하고, find()
및 findOne()
메서드를 통해 데이터베이스에서 데이터를 조회하는 방법을 보여주고 있습니다.
이제 위의 예제를 참고하여 Nest.js와 TypeORM을 사용하여 데이터베이스를 연동해보세요!