카테고리 없음
패스트캠퍼스 환급챌린지 39일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기
Laftel
2025. 4. 12. 22:21
반응형
***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다

1. 비교 오퍼레이터 (비교 연산자)
- Equal: 값이 정확히 일치하는지 비교합니다. (=)
- 예: id: Equal(5) // id가 5인 레코드 검색
- Not: 값이 일치하지 않는지 비교합니다. (<> 또는 !=)
- 예: name: Not('John') // name이 'John'이 아닌 레코드 검색
- LessThan: 값이 주어진 값보다 작은지 비교합니다. (<)
- 예: age: LessThan(30) // age가 30보다 작은 레코드 검색
- LessThanOrEqual: 값이 주어진 값보다 작거나 같은지 비교합니다. (<=)
- 예: price: LessThanOrEqual(100) // price가 100 이하인 레코드 검색
- MoreThan: 값이 주어진 값보다 큰지 비교합니다. (>)
- 예: views: MoreThan(1000) // views가 1000보다 큰 레코드 검색
- MoreThanOrEqual: 값이 주어진 값보다 크거나 같은지 비교합니다. (>=)
- 예: rating: MoreThanOrEqual(4.5) // rating이 4.5 이상인 레코드 검색
- Between: 값이 주어진 두 값 사이에 있는지 비교합니다. (경계값 포함)
- 예: createdAt: Between(['2023-01-01', '2023-12-31']) // createdAt이 2023년 1월 1일부터 2023년 12월 31일 사이인 레코드 검색
2. 패턴 매칭 오퍼레이터 (패턴 매칭 연산자)
- Like: SQL의 LIKE 구문과 유사하게, 특정 패턴을 포함하는 문자열 값을 검색합니다. 대소문자를 구분합니다. (LIKE)
- % (퍼센트): 0개 이상의 문자와 매치됩니다.
- _ (언더스코어): 정확히 1개의 문자와 매치됩니다.
- 예: title: Like('%영화%') // title에 "영화"라는 단어가 포함된 레코드 검색
- 예: name: Like('J_hn') // name이 'J'로 시작하고 'hn'으로 끝나며 중간에 한 글자가 있는 레코드 검색
- ILike: Like와 동일하지만, 대소문자를 구분하지 않습니다. (ILIKE - PostgreSQL 등 일부 데이터베이스에서 지원)
- 예: category: ILike('%book%') // category에 "book" 또는 "BOOK" 등의 단어가 포함된 레코드 검색
3. 집합 오퍼레이터 (집합 연산자)
- In: 값이 주어진 배열 안의 값 중 하나와 일치하는지 비교합니다. (IN)
- 예: id: In([1, 2, 3]) // id가 1, 2, 또는 3인 레코드 검색
- ArrayContains: 배열 컬럼이 주어진 배열의 모든 요소를 포함하는지 비교합니다. (주로 PostgreSQL의 배열 타입에 사용)
- 예: tags: ArrayContains(['nestjs', 'typescript']) // tags 배열이 'nestjs'와 'typescript'를 모두 포함하는 레코드 검색
- ArrayContainedBy: 배열 컬럼의 모든 요소가 주어진 배열 안에 포함되는지 비교합니다. (주로 PostgreSQL의 배열 타입에 사용)
- 예: permissions: ArrayContainedBy(['read', 'write', 'delete']) // permissions 배열의 모든 요소가 'read', 'write', 'delete' 중 하나인 레코드 검색
- ArrayOverlap: 배열 컬럼이 주어진 배열과 하나 이상의 공통 요소를 가지는지 비교합니다. (주로 PostgreSQL의 배열 타입에 사용)
- 예: hobbies: ArrayOverlap(['reading', 'coding']) // hobbies 배열에 'reading' 또는 'coding'이 하나 이상 포함된 레코드 검색
4. 기타 오퍼레이터 (기타 연산자)
- IsNull: 값이 NULL인지 비교합니다. (IS NULL)
- 예: description: IsNull() // description이 NULL인 레코드 검색
- Or: 여러 조건을 논리적인 OR 연산자로 결합합니다. 주어진 조건 중 하나라도 참이면 참이 됩니다. (OR)
- 예: [ { age: LessThan(20) }, { status: 'inactive' } ] // age가 20보다 작거나 status가 'inactive'인 레코드 검색
- And: 여러 조건을 논리적인 AND 연산자로 결합합니다. 주어진 모든 조건이 참이어야 참이 됩니다. (AND - 일반적으로 where 객체 내에서 여러 속성을 지정하면 암시적으로 AND로 처리되지만, 명시적으로 사용할 수도 있습니다.)
- 예: [ { city: 'Seoul' }, { country: 'Korea' } ] // city가 'Seoul'이고 country가 'Korea'인 레코드 검색
- Raw: SQL 구문을 직접 작성하여 조건에 포함시킬 수 있습니다. TypeORM의 표준 오퍼레이터로 표현하기 어려운 복잡한 조건을 구현할 때 유용합니다. 주의해서 사용해야 하며, SQL Injection 공격에 취약해질 수 있습니다.
- 예: Raw("LENGTH(title) > :length", { length: 10 }) // title의 길이가 10보다 큰 레코드 검색
이러한 오퍼레이터들을 조합하여 데이터베이스에서 원하는 데이터를 정확하고 효율적으로 검색할 수 있습니다. TypeORM의 find 메서드나 createQueryBuilder를 사용할 때 where 조건에 이러한 오퍼레이터들을 활용할 수 있습니다.




#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB
반응형