[NestJS] - 12. TypeORM Select
2023. 2. 23. 06:23
반응형
CRUD중 마지막인 Select를 TypeORM을 이용하여 작성해보려고 한다.
find() : 엔티티 리스트 선택
▶ products.service.ts
async findAll(): Promise<Product[]> {
const result = await this.productRepository.find({});
return result;
}
- find(옵션들..) 메서드는 엔티티 모델 리스트들 반환한다.
- 옵션이 없다면 해당 테이블을 전체 선택한다.
findOne() : 단일 엔티티 선택
▶ products.service.ts
async findOne(id: number): Promise<Product> {
const result = await this.productRepository.findOne({
where: { id: id },
});
return result;
}
- findOne(옵션들..) 메서드는 단일 엔티티 모델을 반환한다.
- where 옵션을 통해서 일치하는 ID의 엔티티를 Select
findByIds() : ID에 해당하는 엔티티 리스트 선택
const result = await this.productRepository.findByIds([1, 2, 3], {
order: { name: 'ASC', description: 'ASC' },
});
- findByIds(ID들, 옵션들..) 메서드는 해당 ID에 해당하는 엔터티 집합 모델을 반환한다.
Where : 검색 조건 설정
const result = await this.productRepository.find({
where: [
{ name: '맥북', description: 'M1 Air' },
{ name: '아이패드', description: '실버' },
]
});
- 다음 질의는 (맥북 && M1 Air) || (아이패드 || 실버)인 Product 엔터티 집합을 반환한다.
const result = await this.productRepository.find({
where: [
{ price: Between(1000, 2000) },
]
});
- 다음 질의는 가격이 1000 < N < 2000 인 엔터티 집합을 반환한다.
const result = await this.productRepository.find({
where: [
{ price: LessThan(3000) },
]
});
- 다음 질의는 가격이 N < 3000 인 엔터티 집합을 반환한다.
const result = await this.productRepository.find({
where: [
{ description: Like('%M1%') },
]
});
- 다음 질의는 설명에 M1이 포함된 엔터티 집합을 반환한다.
export declare type FindOperatorType = "not" | "lessThan" | "lessThanOrEqual" |
"moreThan" | "moreThanOrEqual" | "equal" | "between" | "in" | "any" | "isNull" |
"ilike" | "like" | "raw";
- TypeORM 모듈을 뜯어보면 다음과 같이 다양한 검색 연산자를 지원한다.
Select : 일부 컬럼 선택
const result = await this.productRepository.find({
select: ['id', 'name']
});
- 다음 질의는 ID와 Name 컬럼만을 선택한다.
Order : 정렬
const result = await this.productRepository.find({
order: { name: 'ASC', description: 'DESC' },
});
- 다음 질의는 이름 오름차순, 그 다음 설명을 내림차순으로 정렬하여 엔티티 리스트를 반환한다.
해당 강의를 들으면서 학습한 내용을 바탕으로 저만의 프로젝트를 만드는 과정을 기록하여 남기는 것을 목표로 하고 있습니다.
주관적인 생각이 들어가 있을 수 있으므로 혹시 틀린 내용이 있다면 피드백 부탁드립니다.
반응형
'Backend > Node.js (NestJS)' 카테고리의 다른 글
[NestJS] - 14. TypeORM JOIN과 QueryBuilder (0) | 2023.02.25 |
---|---|
[NestJS] - 13. TypeORM 관계 테이블 Insert/Update (1) | 2023.02.23 |
[NestJS] - 11. TypeORM Delete, 실제 삭제와 소프트 삭제 (1) | 2023.02.23 |
[NestJS] - 10. TypeORM Insert / Update (0) | 2023.02.23 |
[NestJS] - 9. Pipe와 Validator, 요청 데이터 사전 검문하기 (0) | 2023.02.23 |