일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 소켓
- 레벨 1
- dfs
- ip
- Crawling
- 문자열
- Algorithm
- 가천대
- 자바스크립트
- 쉬운 문제
- type challenge
- 그래프
- 타입 챌린지
- javascript
- 백준
- 크롤링
- 프로그래머스
- 프로그래머스 레벨 2
- TCP
- HTTP 완벽 가이드
- 타입스크립트
- Nestjs
- socket
- 수학
- BFS
- 알고리즘
- typescript
- HTTP
- dp
- Node.js
- Today
- Total
목록프로그래밍/TypeORM (5)
kakasoo
const users = await this .createQueryBuilder('user') .withDeleted() .where('user.id = :userId', { userId }) .andWhere((qb) => { // 지금까지 결제한 횟수를 알기 위해 OrderInfo 라는 Entity를 카운트한다. const subQuery = qb .subQuery() .select('COUNT(*)') .from(OrderInfoEntity, 'oi') .where('oi.userId = :userId', { userId }) .getQuery(); return `${subQuery}
TAKE으로 데이터를 n개만 조회하기 const [user] = await this.userRepository.find({ take: 1, }); const user = await this.userRepository.findOne(); Repository Pattern에서는 데이터 조회를 위해 find, findOne의 메서드를 지원한다. find는 배열을, findOne은 조건이 일치하는 첫번째 행을 가져온다는 점에서 차이가 있다. 하지만 findOne은 조금 심각한(?) 문제가 있기 때문에 가급적 익숙하지 않다면 사용을 피하는 게 낫다. 따라서 find를 사용하되 take 프로퍼티 값으로 1을 준 후 구조분해할당으로 값을 받는 편이 더 안전하다. findOne에는 어떤 문제가 있는가? TypeORM의..
다대 다 관계를 표현하기 위해서는 연결 테이블이 필요하다. spreadsheet나 excel 등 바둑판 형태의 테이블들을 이용해서 관계도를 표현한다고 해보자. 서로 연결된 대상끼리는 한 쪽이 다른 한 쪽의 행 id를 가짐으로써 관계를 표현할 수 있다. 그런데 두 대상이 서로가 서로를 다수 가질 수 있다면 테이블에서는 이걸 어떻게 표현해야 할까? 정답은 두 시트 사이에 새로운 시트를 하나 두고, 그 시트에게 두 시트의 id만을 가지게 하는 것이다. 두 시트를 가지고는 이 관계를 논리적으로 표현할 수가 없기 때문에 가운데에 이 표현을 도울 테이블을 하나 둔다. 이러한 테이블을 연결 테이블 ( Junction Table ) 이라고 부르는데, 이를 TypeORM로는 이렇게 표현한다. import { Entity..
특별한 Column Decorator import { ApiProperty } from '@nestjs/swagger'; import { DeleteDateColumn, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; import { CreateAtEntity } from './create-at.entity'; export class CommonEntity extends CreateAtEntity { @PrimaryGeneratedColumn() id: number; @UpdateDateColumn() updatedAt: Date; @DeleteDateColumn({ nullable: true }) deletedAt: Date; } TypeORM에..
이미 QueryBuilder로 짜여진 부분은 남겨둬도 된다고 생각했지만, 오늘 다시 생각해보니 고치는 게 이득이다. QueryBuilder로 짜여진 것도, 결국 ON절을 WHERE 절로 고치면 해결할 수 있다. 조금 코드의 형태가 달라지긴 하겠지만, 해결할 수 없는 것은 아니다. // NOTE : 코드 1번 const departments = await this.departmentRepository .createQueryBuilder('department') .leftJoinAndSelect( 'department.userList', 'user', 'user.accountStatus = :available OR user.accountStatus = :rest', { available: UserStatus..