이 글은 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 | 






























































