전체 글
-
nestjs에서 config모듈을 이용한 설정 관리NodeJS 2022. 12. 9. 16:39
nestjs에서 config모듈을 이용한 설정 관리 nodejs에서는 dotenv 라는 모듈을 이용해서 설정 파일을 관리 하였습니다. nestjs는 config라는 모듈을 제공하고 있는데요. 간단하게 사용법을 알아봅니다. 설치 @nestjs/config 모듈은 내부적으로 dotenv 모듈을 사용하고 있습니다. $ npm i --save @nestjs/config 사용 사용법은 imports에 ConfigModule.forRoot()을 추가 하면 됩니다. // app.module.ts import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; @Module({ imports: [ConfigModule.forR..
-
vscode에서 nestjs의 Debug mode 설정카테고리 없음 2022. 11. 18. 15:13
vscode에서 nestjs의 디버그 설정은 다음과 같습니다. nestjs run nestjs를 debug 모드로 실행합니다. $ npm run start:debug pacakge.json에 아래와 같이 --debug --watch설정이 되어 있습니다. { "name": "nest-app", "scripts": { "start:debug": "nest start --debug --watch" } } vscode debug setting 실행이 완료 되면, vscode의 Run and Degbug 메뉴로 이동을 합니다. create a launch.json file을 클릭해서 새로운 launch.json을 생성합니다. 생성시 타입은 node로 설정합니다. .vscode/launch.json 파일이 생성되면..
-
nestjs swagger에서 enum validate 처리 하기NodeJS 2022. 11. 17. 15:11
문서나 인터넷을 찾아보면 ApiProperty에 enum이용하면 validate가 되는것 처럼 설명되어 있으나 동작하지 않습니다. IsEnum 이라는 Annotation을 이용하면 해결이 되네요. import { ApiProperty } from '@nestjs/swagger'; import { IsEnum, IsNotEmpty, IsNumber, IsString } from 'class-validator'; enum TCD { DQST = 'DQST', DLDR = 'DLDR', DNIF = 'DNIF', DROP = 'DROP', CQST = 'CQST', CLDR = 'CLDR', CNIF = 'CNIF', CROP = 'CROP', } export class CreateCmtPostDDto { @..
-
typeorm에서 페이징 처리시 distinct 실행 문제NodeJS 2022. 11. 16. 15:10
typeorm에서 페이징 처리시, distinct 가 실행되는 문제 처리 방법 다음과 같이 typeorm을 사용하여 페이징 처리를 하였습니다. export class CmtCommentDService { async getCommentList(searchCommentDto: SearchCommentDto) { const dataList = await this.cmtReplyDRoRepository.find({ order: { id: 'DESC' }, skip: searchCommentDto.page * searchCommentDto.limit, take: searchCommentDto.limit, }); return dataList; } } 실형 결과를 보면, 아래와 같이 2회 SQL을 질의합니다. -- ..
-
bcrypt를 bcryptjs로 전환NodeJS 2022. 11. 15. 15:10
bcrypt를 bcryptjs로 전환 처리 bcrypt는 가장 유명한 단방향 해쉬 함수를 제공하는 라이브러리 입니다. bcrypt bcrypt 는 C++기반의 node 라이브러리 입니다. 사용을 위해서 OS에 python과 C++등이 OS에 설치되어야 합니다. bcryptjs bcryptJS 는 javascript로만 만들어진 라이브러리 입니다. 비교 디자인 Bcrypt vs BcryptJS Benchmark with Node.js를 확인해보면, bcrypt의 성능이 bcryptJS의 성능보다 좋습니다. 다만 인터넷이 안되는 환경에서 추가 라이브러리를 설치하기 쉽지 않습니다. 따라서, 필요에 의해 bcryptJS의 설치를 추천 합니다. 참고자료 errorMessage”: “/var/task/node_mo..
-
Docker arguments 처리시 유의점LINUX/Docker 2022. 11. 14. 15:09
Docker AGR 이용시 주의 점 이번 프로젝트에서 docker build 시 특정 값을 주입해서 사용하게 되었습니다. 아래와 같이 3개의 인자를 넘기는 build 실행 명령이 있을 경우, --build-arg을 이용해서 Dockerfile에서 사용할 인자를 전달 합니다. $ docker build --build-arg V_ACCOUNT_ID=${V_ACCOUNT_ID} --build-arg V_NEXUS_REGISTRY=${V_NEXUS_REGISTRY} --build-arg V_NEXUS_AUTH=${V_NEXUS_AUTH} -t ${V_CONTAINER_NAME}:${V_TAG_NAME} . Dockerfile에서 인자를 사용할때는 FROM 기준으로 선언 해야 합니다. Dockerfile 예제 #..
-
Mac M1에서 Docker로 Mysql 실행하기LINUX/Docker 2022. 11. 11. 15:08
Mac M1에서 mysql을 실행하기 위해서 많이 검색을 해보았지만, 실제 동작되는 건 아래 명령어입니다. $ docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD= mysql/mysql-server:latest-aarch64 여러가지를 찾아봤지만, mysql/mysql-server:latest-aarch64 이 이미지가 확실하게 돌아가네요! 참고 자료 How to run MySQL in Docker using the M1 silicon chip, with no funny business.
-
nestjs에서 jest TIP 정리NodeJS 2022. 11. 7. 15:08
전체 테스트 코드 예제 import { Test, TestingModule } from '@nestjs/testing'; import { INestApplication } from '@nestjs/common'; import request from 'supertest'; import { AppModule } from './../src/app.module'; import { CmmCodeMController } from '../src/modules/cmm-code-m/cmm-code-m-adm.controller'; import { ValidationPipe } from '@nestjs/common'; import { AuthAdminGuard } from './../src/commons/modules/a..