반응형
이 글은 TypeORM의 기본적인 사용법에 대해 설명합니다.
다음은 이 글을 설명한 유튜브 영상입니다.
목차
- table 생성
- 소스 생성
- 사용법
테이블 생성
다음과 같이 cats table을 생성합니다.
create table cat
(
id int auto_increment
primary key,
name varchar(255) not null comment '고양이 이름',
age int not null comment '고양이 나이',
breed varchar(255) not null comment '고양이 종류'
);
소스 생성
- Nestjs의 Generator(소스 자동 생성)를 사용하여 cats module을 생성합니다.
nest g resource cats
- resource 옵션은 module, controller, service, entities, dto를 한 번에 자동으로 생성합니다.
Entity 객체 생성
- domain/cats.entity.ts
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
@Entity()
export class Cat {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
age: number;
@Column()
breed: string;
}
DTO 수정
- cats/dto/create-cat.dto.ts 를 다음과 같이 만듭니다.
export class CreateCatDto {
name: string;
age: number;
breed: string;
}
모듈에 Entity 임포트
- cats/cats.module.ts에 cats.entity를 임포트 해주어야 사용할 수 있습니다.
import { Module } from '@nestjs/common';
import { CatsService } from './cats.service';
import { CatsController } from './cats.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Cat } from 'src/domain/cat.entity';
@Module({
imports: [TypeOrmModule.forFeature([Cat])],
controllers: [CatsController],
providers: [CatsService]
})
export class CatsModule {}
서비스에서 Repository 사용하기
cats service에서 constructor에 repository를 주입합니다.
- cats/cats.service.ts
constructor(
@InjectRepository(Cat)
private catRepository: Repository<Cat>
){}
- cats/cats.service.ts를 다음과 같이 수정합니다.
async create(createCatDto: CreateCatDto) {
return await this.catRepository.save(createCatDto);
}
async findOne(id: number) {
return await this.catRepository.findOne({where: {id}});
}
async update(id: number, updateCatDto: UpdateCatDto) {
const cat = await this.findOne(id);
if(!cat){
throw new Error('cat not found');
}
Object.assign(cat, updateCatDto);
return await this.catRepository.save(cat);
}
async remove(id: number) {
const cat = await this.findOne(id);
if(!cat){
throw new Error('cat not found');
}
return await this.catRepository.remove(cat);
}
테스트
포스트맨을 사용하여 테스트를 합니다.
- 생성
- POST http://localhost:3000/cats
- Data는 다음과 같습니다.
{
"name": "엄지",
"age": 7,
"breed": "스코티시폴드"
}
- 전체 목록 조회
- GET http://localhost:3000/cats
- 아이디로 조회
- GET http://localhost:3000/cats/1
- 업데이트
- PATCH http://localhost:3000/cats/1
- Data
{
"name": "엄지양이",
"age": 5,
"breed": "스코티시폴드"
}
- 삭제
- DELETE http://localhost:3000/cats/2
이상으로 TypeORM에서 CRUD를 사용하는 방법에 대해서 알아보았습니다.
반응형
'TypeORM' 카테고리의 다른 글
[Nestjs] TypeORM Multiple Database Connection 설정 후 DataSource 사용법 (0) | 2024.09.20 |
---|---|
TypeORM Entity 자동생성툴 - typeorm-model-generator (5) | 2024.09.08 |
3. TypeORM에서 Repository의 개념 이해하기 (0) | 2023.09.12 |
1. TypeORM 개념과 셋팅 (2023, NestJS) (0) | 2023.05.05 |