본문 바로가기
NestJS

TypeORM - FindManyOptions 파라미터

by Programmer.Junny 2025. 2. 24.

repository.find(options?: FindManyOptions<Entity>) 형태로 사용하며, 옵션을 통해 SQL 의 WHERE, ORDER BY, LIMIT/OFFSET, JOIN 등을 내부적으로 처리해준다.

find는 SQL의 SELECT와 같다고 보면 된다.

select

조회할 컬럼을 제한할 때 사용한다.
전체 엔티티 대신 필요한 컬럼만 선택할 수 있어, 성능 최적화에 도움이 된다.

const users = await userRepository.find({
  select: ['id', 'name', 'email']
});

relations

연관 관계(예: @OneToMany, @ManyToOne 등)가 정의된 필드를 함께 로딩할 때 사용한다.
배열 형태로 연관 엔티티의 이름을 문자열로 지정한다.

참고로 Entity에서 eagar 가 true라면 쓸 필요가 없다.

const users = await userRepository.find({
  relations: ['profile', 'posts']
});

where

조회할 때 적용할 조건을 지정한다.
단일 조건 객체나 여러 조건을 배열로 전달할 수 있으며, 복잡한 조건을 작성할 때 유용하다.

// 단일 조건 객체
const users = await userRepository.find({
  where: { isActive: true }
});

// 복수 조건 (OR 조건)
const usersOr = await userRepository.find({
  where: [{ isActive: true }, { age: 25 }]
});

order

결과를 특정 컬럼 기준으로 정렬할 수 있다.
각 컬럼에 대해 “ASC” (오름차순) 또는 “DESC” (내림차순) 값을 지정한다.

const users = await userRepository.find({
  order: { name: 'ASC', createdAt: 'DESC' }
});

skip & take

페이징 처리를 위해 사용한다.
• skip: 몇 개의 레코드를 건너뛸지(offset)
• take: 몇 개의 레코드를 가져올지(limit)

// 두 번째 페이지를 가져오려면, 예를 들어 10개씩 페이징
const users = await userRepository.find({
  skip: 10, // 첫 10개를 건너뜁니다.
  take: 10  // 다음 10개를 조회합니다.
});

cache

쿼리 결과를 캐시할 수 있도록 한다.
Boolean 또는 숫자(밀리초)를 지정하여 캐싱 기간을 설정할 수 있다.

const users = await userRepository.find({
  cache: 60000  // 1분 동안 쿼리 결과를 캐싱합니다.
});

'NestJS' 카테고리의 다른 글

TypeORM - Repository 메서드 종류  (0) 2025.02.25
TypeORM - where 유틸리티  (0) 2025.02.25
TypeORM - 다대다 관계 구현  (0) 2025.02.24
TypeORM - 일대다, 다대일 관계 구현  (0) 2025.02.24
TypeORM - 일대일 관계 구현  (0) 2025.02.24

최근댓글

최근글

skin by © 2024 ttuttak