본문 바로가기

NestJS4

NestJS - Decorator를 활용한 Discord봇 개발환경 개선 IT동아리 Mash-up에서 서버팀 사이드 프로젝트로 Nest를 사용해 Discord 봇을 만들고 있었습니다. 디스코드 봇에 내릴 수 있는 커맨드들을 정의하고 그에 대한 응답을 보내주는 로직을 작성하는데, 이런 커맨드 하나를 추가하기 위해 최소 4개의 파일을 수정해야하는 상황이였습니다. 아래는 각 파일의 수정이 필요한 부분들입니다. 1. 커맨드들에 대한 정보를 정의해야했습니다. 2. 각 커맨드들에 대한 응답을 매핑해서 리턴해주는 Factory Provider에서 각각의 Reply Provider 들을 주입받아 처리했어야했습니다. 3. Nest의 DI를 사용하기 위해 Module에 각 Reply Provider들을 넣어주어야 했습니다. 4. 각 응답에 대한 Reply Provider 파일을 작성해야했습니다.. 2023. 3. 16.
[TypeORM] Active Recore & Data Mapper Pattern 이번에 Nest JS 프로젝트를 새로 시작하게 되었다. 그러면서 둘 중 어느 패턴을 선택하여 적용할지에 대해 고민하게 되었는데 그 과정에서 공부한 것을 간단히 적고자 한다. Active Record Pattern Active Record 패턴은 모델 안에 모든 쿼리들을 정의해두고 CRUD 작업들을 모델의 메소드를 통해 실행하게 된다. 즉, Active Record 패턴은 모델 안에서 데이터베이스에 접근하는 패턴이라고 볼 수 있을 거 같다. import {BaseEntity, Entity, PrimaryGeneratedColumn, Column} from "typeorm"; @Entity() export class User extends BaseEntity { @PrimaryGeneratedColumn().. 2021. 8. 30.
NestJS Lazy-loading Modules 간단 소개 Nest 버전 8에서 나온 최신 방법! 7미만이면 LazyModuleLoader를 불러오지도 못한다.. lazyModuleLoader를 찾을 수 없다면 NestCLI의 버전을 체크하고 업데이트 해주길 바란다! 기존의 Module Load → Bootstrap과 동시에 모든 모듈 로드 Lazy-loading Modules 기법 → 필요한 모듈만 로드하여 부트스트랩 시간 단축 사용 방법 // cats.service.ts @Injectable() export class CatsService { constructor(private lazyModuleLoader: LazyModuleLoader) {} } Or // main.ts import { LazyModuleLoader, NestFactory } .. 2021. 8. 8.
[NestJS] Cannot find module '@nestjs/core/router/route-path-factory' 오류 해결 Cannot find module '@nestjs/core/router/route-path-factory' Nest로 만든 프로젝트에 Swagger 모듈을 연동시키고 실행시키면 위와 같은 오류가 날 때가 있다. NestJS와 nestjs/swagger의 버전이 올라가면서 생긴 문제이다. nest의 7.x.x 버전은 nestjs/swagger의 4.x.x 버전과, nest의 8.x.x 버전은 nestjs/swagger의 5.x.x 버전과 호환되므로 이에 맞게 버전을 수정해주어야 한다. 만약 7버전의 Nest를 사용중이라면 package.json에서 아래처럼 @nestjs/swagger의 버전을 내려주고 npm install을 실행시켜주면 된다. 2021. 7. 17.