return this.userRepository.find({ where: { // 아닌 경우 가져오기 // id: Not(1), // 적은 경우 가져오기 // id: LessThan(30), // 같거나 적은경우 가져오기 // id: LessThanOrEqual(30), // 많은 경우 // id: MoreThan(30), // 많거나 같은 경우 // id: MoreThanOrEqual(30), // 같은 경우 // id: Equal(30), // 유사값 (% 앞뒤로 상관없이 가져옴) // email: Like('%0%'), // 대문자 소문자 구분 안하는 유사값 // email: ILike('%GOOGLE%'), // 사이값 // id: Between(10, 15), // 해당되는 여러개의 값 // id: In([1, 3, 5, 7, 9]), // null인 경우 가져오기 // id: IsNull(), }, });
find 의 where에서는 다양한 유틸리티 함수를 사용할 수 있다.
Not
특정 값과 같지 않음을 조건으로 설정한다.
// id가 1이 아닌 레코드를 조회합니다. where: { id: Not(1) }
LessThan
특정 값보다 작은 값을 조건으로 지정한다.
// id가 30보다 작은 레코드 where: { id: LessThan(30) }
LessThanOrEqual
특정 값보다 작거나 같은 값을 조회할 때 사용한다.
// id가 30 이하인 레코드 where: { id: LessThanOrEqual(30) }
MoreThan
특정 값보다 큰 값을 조건으로 한다.
// id가 30보다 큰 레코드 where: { id: MoreThan(30) }
MoreThanOrEqual
특정 값보다 크거나 같은 값을 조회할 때 사용한다.
// id가 30 이상인 레코드 where: { id: MoreThanOrEqual(30) }
Equal
정확히 같은 값을 가진 레코드를 조회한다.
// id가 30인 레코드 where: { id: Equal(30) }
Like
문자열의 패턴 매칭을 위한 조건이다.
SQL의 LIKE 연산자와 동일하게 작동하며, % 와 같은 와일드카드를 사용한다. (% 앞뒤로 상관없이 가져옴)
// email에 '0'이 포함된 레코드 (패턴 매칭) where: { email: Like('%0%') }
ILike
Like와 비슷하지만, 대소문자 구분 없이 패턴 매칭을 수행한다.
주로 PostgreSQL에서 사용된다.
// email에 'GOOGLE' (대소문자 구분 없이)이 포함된 레코드 where: { email: ILike('%GOOGLE%') }
Between
두 값 사이의 범위 내에 있는 값을 조회할 때 사용한다.
// id가 10과 15 사이인 레코드 where: { id: Between(10, 15) }
In
특정 값들의 집합 중 하나에 해당하는 경우를 조회한다.
// id가 1, 3, 5, 7, 9 중 하나인 레코드 where: { id: In([1, 3, 5, 7, 9]) }
IsNull
해당 컬럼의 값이 NULL인 경우를 조회한다.
// id가 null인 경우 (실제로는 주로 다른 컬럼에 사용) where: { someColumn: IsNull() }
Any
주로 PostgreSQL 등에서 배열 컬럼에 대해, 배열 내의 값 중 하나와 일치하는지 확인할 때 사용한다.
import { Any } from 'typeorm'; // 예를 들어, tags라는 배열 컬럼이 있고, 'typescript'라는 값이 포함된 레코드를 찾을 때: const posts = await postRepository.find({ where: { tags: Any(['typescript']) } });
Raw
보다 복잡하거나 커스텀한 SQL 조건을 직접 작성할 필요가 있을 때 사용한다.
Raw를 사용하면 SQL의 특정 부분을 직접 넣어 조건을 정의할 수 있으므로, 표준 유틸리티 함수로 표현하기 어려운 로직을 구현할 수 있다.
import { Raw } from 'typeorm'; // 예를 들어, title 컬럼의 길이가 10보다 큰 경우를 찾고 싶다면: const posts = await postRepository.find({ where: { title: Raw(alias => `LENGTH(${alias}) > 10`) } });
'NestJS' 카테고리의 다른 글
Authentication - JWT (0) | 2025.02.26 |
---|---|
TypeORM - Repository 메서드 종류 (0) | 2025.02.25 |
TypeORM - FindManyOptions 파라미터 (0) | 2025.02.24 |
TypeORM - 다대다 관계 구현 (0) | 2025.02.24 |
TypeORM - 일대다, 다대일 관계 구현 (0) | 2025.02.24 |