본문 바로가기

전체 글111

NestJS | Multer, Static File Serving MulterMulter는 Node.js에서 파일 업로드를 처리하는 미들웨어로, Express와 NestJS 같은 프레임워크와 함께 자주 사용된다멀티파트 폼 데이터(multipart/form-data)를 처리하며, 업로드된 파일을 요청 객체(req.file 또는 req.files)에 추가해준다이를 통해 서버에서 업로드된 파일을 쉽게 다룰 수 있다특징멀티파트 폼 데이터 지원Multer는 일반적인 JSON 또는 URL-encoded 데이터가 아닌, 파일과 데이터를 함께 전송하는 멀티파트 폼 데이터를 처리한다.스토리지 옵션 제공Multer는 업로드된 파일을 처리할 위치를 설정할 수 있다.메모리 저장소: 파일이 메모리에 버퍼 형태로 저장디스크 저장소: 파일이 지정된 디렉토리에 저장파일 필터링업로드된 파일의 형식.. 2024. 11. 26.
NestJS | Class Validator, Transformer Class ValidatorClass Validator는 NestJS에서 데이터 유효성 검사를 수행하기 위해 사용하는 유효성 검사 라이브러리DTO(Data Transfer Object)와 함께 사용되어, 데이터의 구조와 유효성을 정의하고, 요청 데이터를 자동으로 검증한다. 데코레이터 기반 검증검증 규칙을 정의하는 데 데코레이터를 사용함필드 수준에서 적용하며, 다양한 유효성 검사 규칙을 제공DTO와 함께 사용클라이언트 요청 데이터를 특정 DTO 클래스로 매핑하여 검증NestJS의 파이프와 연동ValidationPipe 를 사용하면 요청 시 데이터 검증이 자동으로 수행된다설치 방법 npm install class-validator주요 데코레이터Decorator설명@IsString()문자열인지 확인@IsInt.. 2024. 11. 20.
NestJS | Guard GuardGuard는 NestJS의 요청 라이프 사이클 중 하나로, 요청이 라우트 핸들러에 도달하기 전에 인증 또는 권한 검사를 수행한다.특정 요청을 처리하기 전에 요청을 가로채고 검증하며, 유효하지 않은 요청은 핸들러에 도달하지 못하도록 막을 수 있다.Guard의 주요 특징요청 흐름을 제어Guard는 요청이 라우트 핸들러에 도달하기 전에 실행함반환 값에 따라 요청의 진행을 허용하거나 차단인증 및 권한 확인에 사용주로 인증 토큰 검증, 사용자 권한 확인 등의 작업에 사용됨데코레이터와 함께 사용@UseGuards() 데코레이터를 통해 특정 컨트롤러 또는 라우트에 적용가능CanActivate 인터페이스 구현Guard는 반드시 CanActivate 인터페이스의 canActivate 메서드를 구현해야 함Guar.. 2024. 11. 20.
NestJS | Pipe PipeNestJS에서 Pipe는 요청 데이터의 변환, 검증, 또는 가공을 수행하는 클래스이다.Pipe는 컨트롤러의 핸들러 메서드로 전달되는 데이터가 사용되기 전에 실행되며, 요청 데이터를 처리하거나 필터링하는 데 유용하다.Pipe의 주요 역할데이터 변환 (Transformation)입력 데이터를 컨트롤러에서 사용할 수 있는 형식으로 변환예: 문자열을 숫자로 변환데이터 검증 (Validation)요청 데이터가 유효한지 확인하고, 유효하지 않은 경우 예외를 던짐.예: 필수 필드가 누락되었거나, 형식이 올바르지 않을 때 에러 반환.Pipe의 종류1. Built-in Pipes (내장 Pipe)ValidationPipe데이터 유효성을 검사주로 DTO와 함께 사용되며, class-validator와 통합된다.예.. 2024. 11. 20.
NestJS | TypeORM Table Inheritance Table InheritanceTypeORM에서 Table Inheritance(테이블 상속)를 사용하면, 상속 구조를 데이터베이스 테이블로 표현할 수 있다.이 방식은 여러 엔티티가 공통으로 사용하는 필드를 하나의 부모 클래스에서 정의하고, 이를 상속받아 사용하는 구조이다.TypeORM에서는 두 가지 테이블 상속 전략을 지원한다:Single Table Inheritance (단일 테이블 상속)Class Table Inheritance (클래스 테이블 상속)1. Single Table Inheritance (단일 테이블 상속)Single Table Inheritance는 모든 상속된 엔티티를 하나의 테이블에 저장하고, type 컬럼을 추가하여 각 행이 어떤 엔티티에 속하는지 구분하는 방식.inheritan.. 2024. 11. 12.
NestJS | TypeORM Entity Embedding 엔티티 임베딩(Entity Embedding) 이란?임베딩(Embedding)은 다른 클래스나 객체를 현재 엔티티에 포함시키는 방식임베딩된 클래스의 필드는 포함된 엔티티의 컬럼으로 확장된다.마치 상속을 사용하는 것처럼 보이지만, 데이터베이스 설계에서는 단일 테이블 내에 확장된 형태로 저장됨.person.entity.tsimport { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';// 중복되는 프로퍼티 막아줄 수 있다.export class Name { @Column() first: string; @Column() last: string;}@Entity()export class StudentModel { @PrimaryGeneratedColu.. 2024. 11. 12.