[NestJS] Authentication
·
라이브러리 & 프레임워크/NestJS
들어가며 이번 게시글에서는 Nest.js 에서 로그인 기능을 구현하는 방법에 대해 알아볼 예정입니다. Nest.js 의 공식 문서를 참고하여 이 게시글을 작성할 예정입니다. 공식 문서 : https://docs.nestjs.com/security/authentication Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriente..
Exception filter
·
라이브러리 & 프레임워크/NestJS
예외 필터(Exception filter) Nest 에서 제공하는 전역 예외 필터 이외에 직접 예외 필터 레이어를 두어 원하는 대로 예외를 핸들링할 수 있습니다. 예외 필터(Exception filter)는 예외가 일어났을 때 에러 로그를 남기거나 응답 객체를 원하는 대로 변경하고자 하는 등의 요구사항을 해결하고자 할 때 사용합니다. 예외가 발생했을 때 모든 예외(Error)를 잡아서 원하는 대로 핸들링할 수 있는 예외 필터를 만들어보고자 합니다. import { ArgumentsHost, Catch, ExceptionFilter, HttpException, InternalServerErrorException } from '@nestjs/common'; import { Request, Response }..
Validation
·
라이브러리 & 프레임워크/NestJS
Validation 들어오는 요청에 대해 자동으로 유효성을 검증하기 위해, Nest 는 아래와 같은 몇 가지 파이프를 제공하고 있습니다. - ValidationPipe - ParseIntPipe - ParseBoolPipe - ParseArrayPipe - ParseUUIDPipe ValidationPipe 는 class-validator 패키지와 이 패키지가 제공하는 선언적 유효성 검증 데코레이터를 사용합니다. ValidationPipe 는 모든 클라이언트 페이로드에 대한 유효성 검증 규칙 적용을 강제할 수 있는 편리한 접근 방식을 제공합니다. 내장 ValidationPipe 사용 요구되는 의존성 설치 $ npm i --save class-validator class-transformer 자동 유효성 ..
Mapped Types
·
라이브러리 & 프레임워크/NestJS
Mapped Type CRUD(Create, Read, Update, Delete)와 같은 기능을 구축할 때 기본 항목 유형을 변형하여 사용하면 편리합니다. Nest 는 이 작업을 보다 편리하게 만들기 위해 유형 변환을 수행하는 몇 가지 유틸리티 함수들을 제공합니다. PartialType POST, UPDATE 요청 처리 시 데이터 삽입에 대한 DTO, 데이터 수정에 대한 DTO를 만듭니다. 일반적으로 데이터 수정 DTO는 삽입 시의 DTO에 종속됩니다. 수정 시의 DTO에 들어가는 개체가 삽입 시의 DTO에 들어 있는 개체에 포함된다는 것입니다. 이런 상황에서 사용할 수 있는 것이 PartialType입니다. PartialType() 함수는 입력 유형의 모든 속성이 선택 사항으로 설정된 유형(클래스)을..
[TypeORM] 마이그레이션
·
라이브러리 & 프레임워크/NestJS
들어가며 그동안 프로젝트를 진행하며 마이그레이션에 대해 모른 채 진행하다 보니 주먹구구 식으로 테이블에 대한 변경사항을 업데이트함으로 인해 수많은 사이드 이펙트가 발생했습니다. 예를 들어 현재 테이블의 상태만 파악 가능하고, 어떤 컬럼이 어떤 데이터 형식에서 어떤 데이터 형식으로 바뀌었는지 추적이 불가능하다는 것이었습니다. 뿐만 아니라 TypeORM 의 sync 옵션을 true 로 설정해놓고 개발을 진행했던 당시 테이블에 저장되어 있던 데이터가 모두 날아가버리는 불상사가 발생했던 적도 있었습니다. 이와 같은 상황이 다시는 일어나지 않도록 해결책을 찾던 도중 마이그레이션에 대해 알게 되었고, 이에 대해 공부한 내용을 정리해 게시글로 남겨놉니다. 이 게시글은 필자가 여러 블로그 및 공식 문서를 통해 정리한 ..
[TypeORM] TypeORM 엔티티 상속을 통한 중복 코드 제거
·
라이브러리 & 프레임워크/NestJS
createdAt, updatedAt, deletedAt 이 중복되는 Users, Workspaces 가 존재한다고 가정했을 때 entities/common.ts import { CreateDateColumn, DeleteDateColumn, UpdateDateColumn } from 'typeorm'; export abstract class Timestamp { @CreateDateColumn() createdAt: Date; @UpdateDateColumn() updatedAt: Date; @DeleteDateColumn() deletedAt: Date | null; } entities/Users.ts @Entity({ name: 'users' }) export class Users extends T..