본문 바로가기

Backend/NestJS

(47)
rabbitMQ) prefetchCount란? event-lisenter repo에서 app.connetMicroservice {} 내부에 prefectCount라는게 있었다. 이것을 처음 보아서 이번 기회에 정리해두려고 한다. prefetchCount:1로 설정이 되어있었는데, 서버당 한 번에 1개의 메시지를 처리한다는 의미이다. 이를 5로 조정한다면, 서버당 한 번에 5개의 메시지를 가져와 처리할 수 있다는 의미이다. 그렇다면 여기서 의문이 생겼었다. 서버당 메시지를 받는 개수가 정해져 있는거면, 한 서버의 하나의 메시지만 온다는 것이 잘 와닿지 않는다. => 이는 여러 개의 이벤트가 큐에 쌓여있을 때 동시에 몇 개까지 땡겨서 작업하겠는가?에 대한 것이다. prefetch:5로 설정했을 경우 1개만 작업하던 것을 동시에 5개까지 메시지를 땡겨와 ..
role이 단수개가 아닌 복수개 처리 role이 원래 단수개였다가 roles로 복수개 처리해야 하는 상황이 왔다. roles를 그냥 string[]으로 받으면 될 줄 알았는데, 이미 있는 메서드에서 role:string으로 처리하고 있었기 때문에 따로 이벤트를 수신할때 처리가 필요했다. const roles = []; for (const role of event.returnValues.roles) { roles.push(this._parseHexToUtf8(role)); }  const payload: ~ payload(constants) = { roles: roles, ... }; 위에서 따로 foreach처럼 하나씩 꺼내와서 리스트에 저장하는 로직을 작성해주고, payload 부분에서는 갖다쓰기만 하면 된다.
event listener와 handler에서 이벤트 수신하기 위한 Dev 환경 셋팅 모노레포인데, 모듈로 쪼개졌기 때문에 evenet listener와 handler repo를 각각 clone받아 작업해야 하는 상황이다. 그래서 event listener와 handler 레포를 각각 다운받고 Dev 환경 셋팅을 하였다. 1. 제일 기본이 되는(.development.env가 먼저 쓰여진) 파일을 listener 레포의 최상위 env 파일 하위에 .development.env 파일을 만들고 똑같이 복사해온다. 2. postgresConfig 파일도 복사해온 환경과 같이 맞춰준다. 특히 ssl 부분을 잘 봐야한다. 3. 복사해온 곳으로부터 가져온 dev db 연결정보를 똑같이 입력해주어 Dev DB를 연결해준다. 그런데, 아래와 같은 문제가 발생하였다. [Nest] 88887 - 08/31..
전화번호 조회시 010-0000-0000 또는 01000000000 둘다 조회 가능하도록 하는 코드 (feat. /-/g) 전화번호를 조회하는 코드에서 010-0000-0000 또는 01000000000 으로도 조회가 가능하도록 코드를 작성했다. // 사용자가 전화번호 입력시 - (하이픈)도 포함해서 검색할 경우에도 검색 가능하도록 처리 if (keyword) { const formattedKeyword = keyword.replace(/-/g, ''); // 하이픈 제거 daoMemberListQuery.andWhere( "(LOWER(wa.name) LIKE LOWER(:keyword) OR REPLACE(wa.phoneNumber, '-', '') LIKE :formattedKeyword)", { keyword: `%${keyword}%`, formattedKeyword: `%${formattedKeyword}%`, }..
Logger 설정할때 앞에 이름 붙이고 싶다면? TokenController 라는 파일 내부에서 Logger을 사용하려면 @nestjs/common의 Logger 모듈을 import 해와야한다. 만약 Run 실행환경에서 [ EVTH : TokenService] ~와 같이 이름을 붙이고 싶다면? export class TokenController extends EventController { private readonly logger = new Logger( 'EVTH: ' + TokenController.name, ); 위와 같이 설정해주면 된다.
Enum Type과 Enum 구조체 사용의 고민 현재 우리 팀은 Enum Type을 사용하고 있다. 하지만 협업하는 다른 팀에서 Enum 구조체를 사용하고 있는데, 우리도 이 방향으로 갈지 아니면 혼용해서 쓸지 고민이다. 일단 Enum Type과 Enum 구조체의 차이점을 알아보자. enum CoffeeSize { Small = 'small', Medium = 'medium', Large = 'large } @Controller('coffee') export class CoffeeController { @Get(':size') orderCoffee(@Param('size') size: CoffeeSize) { } } 가독성과 의미부여용으로 주로 사용 enum PaymentStatus { Pending = 'pending', Completed = 'co..
NestJS의 main.ts를 파헤쳐보자 nest new를 터미널에 입력하면 새로운 nest 프로젝트가 생성된다. 이것을 VSCode에서 열고 실행을 해보면 NestJS에 깔린 기본 내장 프로젝트들이 미리 설치되어 있다. 그중에서도 main.ts를 눈여겨보자. Nest에서는 NestFactory라는 기능을 사용하여 nest 애플리케이션 인스턴스를 생성하는 애플리케이션의 엔트리 파일이다. import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); await app.listen(3000); } bootstrap(); ..
Cannot GET /v1/party-member/2 에러해결 조회 API를 만들기 위해 간단한 테스트 데이터를 넣고 로직을 짰었다. controller와 service랑 연관을 잘 지었다고 생각했지만..? 계속해서 404 에러가 발생했었다. 404 에러가 발생했던 이유에 대해서 생각했던 점은 다음과 같다. 1) Dev DB에 dummy(test) data가 없어서 -> 추가 그런데 Dev DB에 데이터를 추가했어도 계속해서 404 에러가 발생했던 것이었다. { "statusCode": 404, "timestamp": "2023-08-18T03:08:25.690Z", "path": "/v1/party-member/2", "message": "Cannot GET /v1/party-member/2" } 내가 작성했던 Controller.ts는 다음과 같다. @Get()..
Nestjs 프로젝트 생성하며 알게된점 (package.json 내부의 모듈역할, dependencies 그리고 devDependencies) NestJS로 어찌저찌 일을 하고는 있지만, 사실 부족한 개념들이 많은 것 같다. 퇴근하고 NestJS 강의를 들으며 새로 알게된 사실들이 있어서 정리하고자 한다. 기존에는 신경을 쓰지 않았던 것들이다. 1) 터미널에서 nestjs의 특정 모듈, 타입스크립트 특정 버전을 명시하여 설치할 수 있다. npm install @nestjs/common@7.6.17 @nestjs/core@7.6.17 @nestjs/platform-express@7.6.17 reflect-metadata@0.1.13 typescript@4.3.2 2) package.json에서 보이는 NEST 관련 모듈들의 역할 "dependencies": { "@nestjs/common": "^10.0.0", "@nestjs/core": "^1..
zsh: command not found: nest 해결방법 맥북 터미널을 이용해 프로젝트 경로에서 프로젝트를 생성하려고 하니 자꾸 아래와 같은 에러가 떴다. 난 Nest 다 설치해서 쓰고 있었고, node와 npm 둘다 설치해서 쓰고 있는데 뭐가 문제인가..! zsh: command not found: nest 계속해서 시도해본 방법은 다음과 같다. 1) 아래의 명령어를 입력하면 에러가 뜬다. 프로젝트 경로이름 npm install -g @nestjs/cli npm notice Beginning October 4, 2021, all connections to the npm registry - including for package installation - must use TLS 1.2 or higher. You are currently using plainte..