[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' },
    });
  • 다음 질의는 이름 오름차순, 그 다음 설명을 내림차순으로 정렬하여 엔티티 리스트를 반환한다.

 

 

 

 


해당 강의를 들으면서 학습한 내용을 바탕으로 저만의 프로젝트를 만드는 과정을 기록하여 남기는 것을 목표로 하고 있습니다.

주관적인 생각이 들어가 있을 수 있으므로 혹시 틀린 내용이 있다면 피드백 부탁드립니다.

https://www.inflearn.com/course/%EB%B6%80%ED%8A%B8%EC%BA%A0%ED%94%84-%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B3%A0%EB%86%8D%EC%B6%95-%EC%BD%94%EC%8A%A4/dashboard

 

[인프런x코드캠프] 부트캠프에서 만든 고농축 백엔드 코스 - 인프런 | 강의

코딩과 사랑에 빠져버린 8년차 풀스택 개발자 Captain의 사심이 가득 담긴 커리큘럼이에요. 백엔드의 모든 것을 다 알려주고 싶은 Captain의 마음이 녹아있죠! 이 강의를 듣다보면 '이렇게까지 알려

www.inflearn.com

 

반응형

BELATED ARTICLES

more