IT,프로그래밍/Node.js

    [Nest.js] Exceptionfilter, DTO, Entity, DTO와 Entity의 차이점

    Exceptionfilter 문서링크 Nest에는 애플리케이션 전체에서 처리되지 않은 모든 예외를 처리하는 예외 레이어가 내장되어 있습니다 Throwing standard exceptions Nest는 @nestjs/common 패키지에서 노출된 내장 HttpException 클래스를 제공합니다 일반적인 HTTP REST/GraphQL API 기반 애플리케이션의 경우 특정 오류 조건이 발생할 때 표준 HTTP 응답객체를 보내는 것이 가장 좋습니다. Built-in HTTP exceptions Nest는 기본 HttpException에서 상속되는 표준 예외 집합을 제공합니다. 이들은 @nestjs/common 패키지에서 노출되며 가장 일반적인 HTTP 예외중 대부분을 나타냅니다. 자세한 내용은 상단의 ne..

    [Nest.js] 데코레이터(Decorator),Module,Controller,Provider란?

    데코레이터 데코레이터 개념 데코레이터 개념 2 데코레이터는 함수를 명시적으로 수정하지 않고도 확장하거나 기능확장을 시킬수 있는 방법이다. 함수를 일급 시민으로서의 기능을 지원하는 모든 언어는 데코레이터를 구현할 수 있다(예를 들어, 자바스크립트는 함수를 변수에 할당하거나 다른 함수에 인자로 전달할 수 있다). //자바스크립트의 객체는 속성이 있고, 각 속성은 값을 가지고 있다. const oatmeal = { viscosity: 20, flavor: 'Brown Sugar Cinnamon', }; //그러나 각 속성은 값 외에도 화면 밖에 숨겨진 정보들이 있는데, 이런 정보들이 각 속성이 //어떻게 작동할지를 정의한다. 이것을 속성 설명자라고 한다. console.log(Object.getOwnPrope..

    node.js crypto를 이용한 random string 얻는법

    node.js에는 많은 기본제공 모듈이 있다. 그중에서 암호화,복호화 기능을 제공하는 crypto 모듈을 이용해서 랜덤 스크링을 얻을수 있는 방법이있어서 소개해 주려한다 랜덤 스트링의 경우 환경설정등의 key 값으로 종종 사용되기에 알아두면 편리하다 코드는 매우 간단하다 const crypto = require("crypto"); console.log(crypto.randomBytes(20).toString('hex')) 위와 같이 몇줄 안되는 소스로 영어 소문자+숫자의 랜덤스트링을 얻을수 있다. f39bf14f62922b8c054e5781aaa806e4f5ad4a39 console.log(crypto.randomBytes(20).toString('base64')) hex 에서 base64로 바꾸게 되면..

    [better code] if else, case 안쓰고 분기하는법

    개발을 하던중 특정조건에 따라 if else 나 case문으로 분기를 하는 경우가 종종있었는데 항상 보기가 안좋았고 다른 방법이 없을까 고민을 했었다 const processFunc = reqire('./processFunctions'); . . . switch(type){ case 'printing' : processFunc.printingCaseFunc(); break; case 'cutting' : processFunc.cuttingCaseFunc(); break; case 'molding' : processFunc.moldingCaseFunc(); break; case 'sheeting' : processFunc.sheetingCaseFunc(); break; case 'design' : proc..

    express-validator 에서 array 내부 object 검증 하는법

    express-validator 라는 모듈은 미리 명시해준 기준에 따라 검증을 할수있게 해주는 모듈입니다. 예를 들어 body에 전달되는 값중 age 이라는 키의 값이 반드시 Integer형만 와야 한다고 한다면 body('age').isInt() 라고 표현해주면 body에 전달되는 값중 age는 반드시 숫자형이 와야 한다는 뜻이고 아닐경우 핸들링 해주는 기능을 제공합니다. 더 자세한 내용은 이번 글에서 다룰내용이 아니기에 API Document 링크를 첨부합니다 -> https://express-validator.github.io/docs/validation-chain-api.html#isstring 이번글의 주제는 만일에 Array 내부에 들어가는 object의 값을 검사하고 싶으면 그러면 어떻게 해..

    [Node.js] Redirect 를 data 와 함께 보내는법

    Node 서버 내에서 redirect를 data와 함께 보내줘야 하는 일이 있었다. 방법이야? data=1234와 같이 url에 querystring으로 던져주면 되는 일이지만 원시적인 방법으로 하고 싶지 않아서 [ node redirect with data ]라는 키워드로 구글링을 하여서 아래의 스택오버플로(친구!)에서 필요한 정보를 얻을 수 있었다. https://stackoverflow.com/questions/19035373/how-do-i-redirect-in-expressjs-while-passing-some-context How do I redirect in expressjs while passing some context? I am using express to make a web app ..

    [Node, express, ejs] i18next 써서 국제화 하기 [2]

    i18next 써서 국제화 하기 [2] 전편에서는 I18next 를 써서 라우터 에서 text 를 불러온뒤에 랜더링 하는것을 해보았습니다. 하지만 이와같은 방법으로 하게되면 json 의 값을 불러오는거 밖에 안되기에 나는 view 에 바로 넣고 싶은 방법을 찾고있었습니다. 힘들게 힘들게 찾은 이 issue 에서 사용한 ejs.filters 는 더이상 사용할수가 없는 기능 이었습니다. 결국 찾아낸 것은 res.locals 에 데이터를 넣어주면 ejs 에서 res.locals의 값을 같이 가지고 간다는 정보였습니다. 따라서 하나하나 테스트 해보기로 했습니다. 먼저 어제의 소스에서 / 라우트는 추가해 줍니다 app.get('/', (req, res) => { res.render('test', { text: r..

    [Node, express, ejs] i18next 써서 국제화 하기 [1]

    i18next 써서 국제화 하기[1] 회사에서의 업무중 페이지를 국제화 시켜야 하는 업무가 생겼다. 여기서 국제화란 한개의 페이지를 여러 국가의 언어로 만들어서 말그대로 국제화 시키는것 을말한다 위와 같이 같은 구글 페이지지만 텍스트가 한글과 영어 버전이 각각 있다. 과거에는 각 언어마다 뷰 페이지를 만들었다고 한다. 즉 영어,한국어가 필요하면 복,붙 으로 2개 페이지 4개의 언어가 필요하다면 복,붙 으로 4개페이지 를 만들었어야 헀다. 당연히 이것은 유지보수에 있어서 끔찍한 결과를 초래한다. 그래서 국제화 라이브러리 들이 생겨났는데 그중에서 나는 i18next 써드파티 모듈을 쓰기로 했다. 쓰기로한 이유는 가장 최신버전을 유지하고있고 각종 프레임워크를 지원하며 공식 documentation 이 비교적 ..