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 |