개발일지/Node.js

개발일지/Node.js

Prisma vs TypeORM 벤치마크

새로운 프로젝트를 시작하기에 앞서 Nest.js, MySQL과 함께 사용할 ORM을 선택해야 하는 상황이 왔다. 다양한 ORM이 존재하지만 Prisma, TypeORM 둘 중 하나를 선택하기로 했다. 많은 글에서 두 ORM의 장단점을 비교하고 있지만, 성능 비교는 많지 않았고, 그마저도 최신자료는 없었다. Benchmark: Prisma VS TypeORM Prisma and TypeORM are possibly the main ORM choices for the JavaScript ecosystem in 2022, so I have... dev.to 뭐 어쨋든 참고해 보자면 위 글은 2년 전 자료이고, PostgreSQL을 사용했다고 한다. 대략 요약하자면, 전반적으로 거의 비슷하나 Prisma가 근소..

개발일지/Node.js

TypeORM + MySQL8 AsText does not exist

개발환경 node: v20.10.0 nestjs: v10.0.0 typeorm: v0.3.20 mysql2: v3.9.2 mysql: v8.0.0 문제. AsText does not exist Mysql의 Point 타입을 사용해서 좌표 관련 기능을 구현하던 중, 문제가 발생했다. typeorm의 조회관련 메서드를 사용해 DB에 SELECT 쿼리를 보냈더니 다음과 같은 에러가 발생했다. QueryFailedError: FUNCTION db-name.AsText does not exist 원인. 대략 찾아보니 타 DB에는 공간(Spatial) 관련 타입을 처리할 때, AsText와 같은 함수가 존재해 이를 이용해서 조회를 할 수 있다고 한다. 그래서 Typeorm이 DB에서 해당 타입을 조회할 때, AsT..

개발일지/Node.js

Nestjs - Shared modules : 의존성 주입을 통하여 모듈 공유하기

NestJS는 모듈과 서비스를 효과적으로 구성하고 관리할 수 있는 강력한 기능을 제공합니다. 오늘은 NestJS에서 서비스를 공유하는 두 가지 방법인 의존성 주입(Dependency Injection)과 모듈 임포트에 대해 알아보겠습니다. NestJS는 모듈과 서비스를 사용하여 애플리케이션을 구성합니다. 모듈은 애플리케이션의 부분을 나타내며, 서비스는 비즈니스 로직을 처리하고 데이터를 관리합니다. 상황 가정 1. Flowers와 Places라는 기능이 있다고 가정 (nest g resources flowers, nest g resources places) 2. FlowersController에서 PlacesService를 사용하고 싶음 3. 단, PlacesService를 새로 생성하는 것이 아닌 하나의..

개발일지/Node.js

TypeORM - @Column({ unique : true }) vs @Unique()

nestjs + typeORM을 공부하던 중 특정 컬럼에 대해 유니크 속성을 주어야 하는데, 두 가지 방법이 보였다. 첫 번째는 변수에 @Column 데코레이터를 사용하는 것이고, 두 번째는 클래스에 @Unique 데코레이터를 사용하는 것이다. 두 방법 모두 유니크 속성을 부여한다는 것은 동일하지만 약간의 차이가 있다. 유니크 속성을 각각 부여하느냐, 합쳐서 부여하느냐의 차이다. @Column({ unique : true }) 일반적으로 원하는 특정 컬럼에 유니크 속성을 주기 위해 사용할 수 있다. @Column({ unique: true }) first: string; @Column({ unique: true }) second: string; 이러한 방식으로 생성된 제약조건을 살펴보면 각각 컬럼별로 두..

개발일지/Node.js

SQL Injection 방지 - 권장방식에는 다 이유가 있지..

nodejs express 공부를 하고 있는데, 쿼리를 작성하던 중 문득 생각이 들었다. ` SELECT * FROM users WHERE user_id = ? ` mariadb 모듈에는 query 함수가 있는데, 첫 번째 인자로 쿼리 문자열 받고, 두 번째 인자로 쿼리의 플레이스홀더(? 부분)에 해당하는 부분을 배열 형태로 받는다. 세 번째 인자로 콜백함수를 받는다. 여기서 ${} 형태로 작성하면 가독성과 유지보수 측면에서 더 좋지 않나? 라는 생각이 들었다. ` SELECT * FROM users WHERE user_id = ${userId} ` 이런 식으로 작성하고 두 번째 인자를 생략하면 정상적으로 작동된다. 하지만 또 한편으로 드는 생각이 굳이 첫 번째 방식으로 작성하고 두 번째 인자로 배열을 ..

E-room
'개발일지/Node.js' 카테고리의 글 목록