
nodeJs에서는 mybatis-mapper 모듈을 사용하였지만 NestJS에서는 TypeORM은 둘 다 TypeScript 기반으로 작성되었으며, 이 둘을 함께 사용하면 일관된 언어와 코드 스타일을 유지하기 위한 장점과 개발자 커뮤니티와 잘 작성된 문서를 가지고 있어서 지원 및 문제 해결이 용이하기해 자주 사용하는 것 같아 사용해보기로 했습니다.
QueryBuilder 함수 정리
- select
select([조회할 엔티티 속성 배열]): 조회할 엔티티 속성을 선택합니다.
const users = await userRepository
.createQueryBuilder("user")
.select(["user.id", "user.username"])
.getMany();
- where
where(criteria, parameters): WHERE 절을 추가합니다. criteria는 쿼리 조건을 나타내며 parameters는 조건에 전달되는 파라미터입니다.
const users = await userRepository
.createQueryBuilder("user")
.where("user.username = :username", { username: "john_doe" })
.getOne();
- update
update(entity) 테이블 엔티티를 인자값으로 넣고 사용합니다.
await userRepository
.createQueryBuilder()
.update(User)
.set({ name: 'New Name' })
.where('id = :id', { id: 1 })
.execute();
-delete
await userRepository
.createQueryBuilder()
.delete()
.from(User)
.where('id = :id', { id: 1 })
.execute();
- orderBy
orderBy(order, direction): 결과를 정렬합니다.
const users = await userRepository
.createQueryBuilder("user")
.orderBy("user.username", "ASC")
.getMany();
- leftJoin
leftJoin(entity, alias, condition): left 조인을 추가합니다.
const usersWithPosts = await userRepository
.createQueryBuilder("user")
.leftJoin("user.posts", "post")
.getMany();
- innerJoin
innerJoin(entity, alias, condition): inner 조인을 추가합니다.
const usersWithOrders = await userRepository
.createQueryBuilder("user")
.innerJoin("user.orders", "order")
.getMany();
- groupBy
groupBy(columns): 그룹화할 열을 지정합니다.
const result = await userRepository
.createQueryBuilder("user")
.select("user.department, COUNT(user.id)", "userCount")
.groupBy("user.department")
.getRawMany();
- having
having(criteria, parameters): HAVING 절을 추가합니다. 일반적으로 그룹화된 결과에 대한 필터링에 사용됩니다.
const result = await userRepository
.createQueryBuilder("user")
.select("user.department, COUNT(user.id)", "userCount")
.groupBy("user.department")
.having("COUNT(user.id) > :count", { count: 5 })
.getRawMany();
'nestjs & nodejs' 카테고리의 다른 글
typeorm 이미 생성된 테이블 entity 생성하기 (typeorm-model-generator) (0) | 2024.03.06 |
---|---|
Nodejs에서 winston Logger 사용해보기 (0) | 2023.10.10 |
NestJS swagger로 API문서화하기 (0) | 2023.09.26 |
NestJs JWT(Json Web Token) 발행 및 확인해보기 (0) | 2023.09.25 |
NestJS UseGuards로 Api 호출시 인증정보 확인하기 (1) | 2023.09.21 |