app.module.ts
에서 연결 설정
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost', // url 수정
port: 3306,
username: 'test',
password: 'password',
database: 'testdb',
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: true, // 개발 시만 true, 배포 시엔 false
}),
],
})
export class AppModule {}
user.entity.ts
에서 Entiry 정의 (데이터 모델 정의)
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity() // DB 테이블을 나타냄
export class User {
@PrimaryGeneratedColumn() // PK(Primary Key), 자동 증가되는 ID
id: number;
@Column() // 일반 필드
name: string;
@Column()
email: string;
}
user.service.ts
에서 Repository 사용 (비즈니스 로직 처리)
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';
@Injectable() // DI(Dependency Injection, 의존성 주입) 대상임을 선언
export class UserService {
constructor(
@InjectRepository(User)
private userRepository: Repository<User>, // 해당 Entity의 DB 접근을 위한 Repository 주입
) {}
// 실제 동작을 수행하는 함수들(서비스 로직 / 등록, 전체 조회 등등)
async create(name: string, email: string): Promise<User> {
const user = this.userRepository.create({ name, email }); // 객체 생성
return this.userRepository.save(user); // DB 저장
}
async findAll(): Promise<User[]> {
return this.userRepository.find(); // 전체 유저 조회
}
}
@Injectable()