주요 메소드 및 기능
create: 모델에 해당되는 객체를 생성하지만 데이터베이스에 저장하지 않음
const user = this.userRepository.create({ email: 'example@domain.com', });
- 새 객체를 만들고 검증할 때 유용합니다.
save: 객체를 데이터베이스에 저장
const user = await this.userRepository.save({ email: 'example@domain.com' });
- 객체를 생성하고 즉시 데이터베이스에 저장할 때 사용됩니다.
preload: 데이터베이스에 있는 데이터를 입력된 값으로 업데이트
const user = await this.userRepository.preload({ id: 101, email: 'new_email@domain.com', });
- 지정된 ID의 객체가 있으면 해당 필드만 업데이트하고, 없으면
undefined
를 반환합니다.
- 지정된 ID의 객체가 있으면 해당 필드만 업데이트하고, 없으면
delete: 조건에 맞는 데이터를 삭제
await this.userRepository.delete(101);
- 특정 ID를 기반으로 데이터를 삭제합니다.
increment: 특정 필드의 값을 증가
await this.userRepository.increment( { id: 3 }, 'count', 100 );
- 주로 수량이나 카운트를 증가시킬 때 유용합니다.
decrement: 특정 필드의 값을 감소
await this.userRepository.decrement( { id: 1 }, 'count', 2 );
- 수량을 줄이거나 특정 값을 감소시킬 때 사용됩니다.
count: 조건에 맞는 데이터의 총 개수 반환
const count = await this.userRepository.count({ where: { email: ILike('%0%'), }, });
- 특정 조건에 맞는 데이터가 얼마나 있는지 확인할 때 사용됩니다.
sum: 특정 필드 값의 합계를 계산
const sum = await this.userRepository.sum('count', { id: LessThan(4), });
- 특정 필드의 총합을 계산할 때 유용합니다.
average: 특정 필드 값의 평균을 계산
const average = await this.userRepository.average('count', { id: LessThan(4), });
- 특정 조건에 해당하는 데이터의 평균을 구할 때 사용됩니다.
minimum: 특정 필드 값의 최소값을 찾음
const min = await this.userRepository.minimum('count', { id: LessThan(4), });
maximum: 특정 필드 값의 최대값을 찾음
const max = await this.userRepository.maximum('count', { id: LessThan(4), });
find: 조건에 맞는 모든 데이터를 조회
const users = await this.userRepository.find({ where: { isActive: true }, order: { createdAt: 'DESC' }, });
findOne: 조건에 맞는 첫 번째 데이터를 조회
const user = await this.userRepository.findOne({ where: { id: 3 }, });
findAndCount: 조건에 맞는 데이터를 조회하면서 총 개수도 함께 반환
const [users, total] = await this.userRepository.findAndCount({ take: 3, });
- 페이징 처리를 할 때 매우 유용합니다.
자주 사용하는 추가 옵션들
where: 조회 조건을 설정
Equal
,Not
,Like
,In
,Between
등을 조합하여 세부 조건을 설정할 수 있습니다.
order: 정렬 순서 지정
order: { id: 'ASC' }// 오름차순 정렬
skip: 조회 결과에서 특정 개수만큼 건너뜀
skip: 10// 10개를 건너뛰고 시작
- 주로 페이징 처리를 위해 사용됩니다.
take: 조회 결과에서 특정 개수만큼만 가져옴
take: 5// 5개만 가져오기
skip
과 함께 페이징 처리에 유용합니다.
relations: 연관된 엔티티 데이터를 함께 가져옴
relations: ['profile', 'photos']
select: 특정 컬럼만 선택
select: ['id', 'email']// 지정한 컬럼만 가져오기
lock: 트랜잭션 내에서 데이터의 동시성 제어
pessimistic_read
,pessimistic_write
등의 값을 지정해 동시 작업 시 충돌을 방지할 수 있습니다.
cache: 쿼리 결과를 캐싱하여 성능 최적화
cache: true
이러한 메소드와 옵션들을 잘 활용하면 다양한 상황에 맞는 효율적인 데이터 조회와 수정이 가능합니다.
'TypeOrm' 카테고리의 다른 글
TypeOrm FindManyOptions (0) | 2024.11.11 |
---|---|
TypeOrm 관계 설정 옵션 (0) | 2024.11.11 |
TypeOrm FindManyOptions (0) | 2024.11.11 |
TypeOrm Relationship (0) | 2024.11.09 |
TypeOrm Inheritance (1) | 2024.11.08 |