NodeJS
-
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}, ..
-
nestjs에서 passport + SAML 로그인시 오류 발생 처리NodeJS 2021. 12. 12. 01:06
SAML assertion expired [Nest] 32582 - 2021-06-25 15:24:29 [ExceptionsHandler] SAML assertion expired +40568ms Error: SAML assertion expired at SAML.checkTimestampsValidityError (/Users/lahuman/dev/oss-square/backend/node_modules/passport-saml/lib/passport-saml/saml.js:1047:24) at /Users/lahuman/dev/oss-square/backend/node_modules/passport-saml/lib/passport-saml/saml.js:988:37 at processTicksAndR..
-
nestjs에서 jest를 이용한 End2End 테스트 케이스를 작성NodeJS 2021. 7. 23. 00:09
nestjs에서 jest를 이용한 End2End 테스트 케이스를 작성하였습니다. src/user/user.controller.spec.ts 파일에 사용자 추가/수정/삭제/조회에 대한 테스트 케이스를 작성하였습니다. End2End 데이터 기준의 validate 테스트 로그인 Mock 객체 주입 테스트 repository Mock 객체 테스트 전체 테스트 케이스 실행은 다음의 명령어로 할 수 있습니다. node run test특정 테스트 케이스 실행은 다음 명령어로 할 수 있습니다. node node_modules/jest/bin/jest.js src/user/user.controller.spec.ts 테스트 케이스를 이용하면 코드의 오류를 빠르게 찾아낼 수 있습니다. 그 외에도 플로우차트 기반으로 테스트 ..
-
NestJS에서는 기본적으로 jest 기반의 테스트 케이스를 제공합니다.NodeJS 2021. 7. 15. 00:07
오늘 설명은 Controller 기반의 테스트에서 다음 내용입니다. Repository 객체를 Mock으로 주입 Connection 객체를 Mock으로 주입 mockAuthGuard 객체를 Mock으로 주입하여 로그인 처리 첨부파일 업로드 Mock 객체 생성 자동으로 만들어진 테스트 케이스는 아래와 같습니다 import { Test, TestingModule } from '@nestjs/testing'; import { Controller } from './my.controller'; describe('Controller', () => { let controller: Controller; beforeEach(async () => { const module: Te..
-
nodejs에서 middleware 처리 방법NodeJS 2021. 7. 13. 00:06
기존 function에서 오류가 날 경우 봇으로 메시지 발송 기능을 구현 하려고 합니다. express에서는 middleware를 활용했었는데, 순수한 javascript에서는 어떻게 해야할지 검색을 해보니 Is there a way to add try-catch to every function in Javascript? 를 확인 할 수 있었습니다. var tcWrapper = function(f) { return function() { try { f.apply(this, arguments); } catch(e) { customErrorHandler(e) } } }위 예제의 문제는 결과 값 return 처리가 안되었다. async (비동기) 처리에서 오류 발생시 catch가 안됩니다. 이를 해결하기 위해..
-
[개인프로젝트] Workplace ExportNodeJS 2021. 2. 20. 18:01
Workplace Export 워크플레이스의 관리자 패널에서는 특정 Group의 게시글을 export를 제공하지 않습니다. 이 프로젝트는 Workplace의 특정 Group의 게시글을 다운 받는 기능을 제공합니다. 한번에 다운받을 게시글의 수는 .env에서 변경이 가능합니다. 너무 큰 숫자의 경우 Workplace 서버에서 오류가 발생할 수 있습니다. (권장: 100, 최대 : 500, 테스트에서는 1000도 가능하였으나, 오류가 간간히 발생했습니다.) workplace 게시글 + 댓글을 xlsx 형식으로 다운로드 합니다. Screen 그룹 정보 조회 그룹 ID를 기준으로 그룹 정보가 표기 1번째 이후 게시글 다운로드 시 게시글 다운로드 다음 으로 UI 변경 모든 게시글 다운로드 시 알림 표기 잘못된 그..
-
[개인프로젝트]md5-liteNodeJS 2021. 2. 18. 17:55
md5-lite 프로젝트 바로가기 파일을 청크(Chunk) 사이즈 처리를 해서 성능 향상을 목적으로 만들어진 모듈입니다. 파일 크기가 200000byte(0.2MB) 이상일 경우 초기 100000byte (0.1MB)와 마지막 100000byte을 이용하여 md5 hash 처리 합니다. 그보다 크기가 작을 경우 전체 데이터의 전체를 md5 hash 처리 합니다. 사용법은 다음과 같습니다. Installation npm install md5-lite --save yarn add md5-lite bower install md5-lite --save Usage Javascript const {md5Lite} = require('md5-lite'); console.log(md5Lite('...