NodeJS
-
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..
-
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..
-
공통 테이블을 상수로 전환 처리NodeJS 2022. 10. 31. 15:04
공통 테이블의 값을 상수로 변환해는 방식을 고민 하다 SQL을 이용해서 처리해 보았습니다. 테이블 구조 CREATE TABLE `cmm_code_m` ( `id` int NOT NULL AUTO_INCREMENT COMMENT 'id', `reg_sytm_nm` varchar(100) NOT NULL COMMENT '등록시스템명', `mod_sytm_nm` varchar(100) NOT NULL COMMENT '수정시스템명', `cmm_grp_cd` varchar(50) DEFAULT NULL COMMENT '공통그룹코드', `cmm_cd_nm` varchar(100) DEFAULT NULL COMMENT '공통코드명', `cmm_cd_val` varchar(300) DEFAULT NULL COMMENT..
-
nestjs에서 멀티 DB 설정 및 셋팅NodeJS 2022. 10. 28. 15:03
nestjs에서 멀티 DB 설정 및 셋팅 2개 이상(ex: Main, Read)의 DB를 사용하기 위해서는 AppModule에 TypeOrmModule을 2개 설정해야 합니다. ... @Module({ imports: [ TypeOrmModule.forRootAsync({ // 이름이 없는 default 는 필수로 필요 imports: [ConfigModule], inject: [ConfigService], useFactory: (configService: ConfigService) => ({ type: 'sqlite', database: configService.get('DB_HOST'), dropSchema: configService.get('DB_DROP') === 'true', entities: ..
-
typescript 객체 생성 유틸NodeJS 2022. 10. 28. 15:02
typescript 객체 생성 유틸 typescript를 사용하여 entity, dto, ro 등을 생성하다 보면, 같은 항목을 가진 객체들이 계속 생겨 납니다. 이때, 하나가 변경되면 모든 항목의 변경을 해줘야 하는데, 이를 쉽게 하는 방법으로 Utility Types를 사용합니다. Partial Type 집합의 모든 프로퍼티를 선택적으로 타입을 생성합니다. 이 유틸리티는 주어진 타입의 모든 하위 타입 집합을 나타내는 타입을 반환합니다. interface Todo { title: string; description: string; } function updateTodo(todo: Todo, fieldsToUpdate: Partial) { return { ...todo, ...fieldsToUpdate ..
-
javascript array에서 중복되는 객체 제거하기NodeJS 2021. 12. 14. 02:08
중복 제거 하기 단순한 숫자나 문자의 중복 제거는 Set을 이용하면 간단하게 처리 할 수 있습니다. const list = ['1', '2', '3', '2', 1,2,3, 1,2,3]; // Set 을 이용한 방식 [...new Set(list)] // filter를 이용한 방식 list.filter((item, index) => list.indexOf(item) === index); // 결과 [ '1', '2', '3', 1, 2, 3 ] 하지만, 객체의 중복제거의 경우는 조금 다른 방식으로 처리 해야 합니다. # 중복 제거가 안됨 const list = [{a:1, b:2}, {a:2, b:1}, ..