
req, res는 사용하지 않는 게 좋다.그 이유는 express에 결합이 되기 때문이다.
캐싱이란?정의: 자주 변하지 않는 데이터에 동일한 요청이 지속적으로 들어오는 경우에 캐싱 기능을 사용하면 성능을 올릴 수 있다.다운로드: npm i @nestjs/cache-manager cache-manager
회원가입을 할 때 이메일 인증을 확인해야 회원가입이 진행된다.구글에서 Gmail API를 사용해야 한다.https://console.cloud.google.com/projectselector2/apis/dashboard?supportedpurview=proje

Controller 클라이언트로부터 요청이 들어오면 Controller에서 Service에 요청 사항을 보내준다.Nest에서는 HTTP 요청을 처리하기 위해 컨트롤러를 사용한다.컨트롤러는 특정 URI 엔드포인트와 HTTP 요청 메서드를 처리하는 메서드를 정의한다.S

Nest CLI란? nest 기본 프로젝트 폴더들을 만들어준다. npm i -g @nestjs/cli // > nest new aNest aNest라는 nest 폴더를 만들어준다 그러면 요렇게 폴더가 생성되는데 나는 aNest로 생성했지만 nest에서 a-ne
Module 속성imports현재 모듈에서 사용하려는 다른 모듈들의 목록을 정의합니다.이 속성에 명시된 모듈들은 주로 필요한 프로바이더(서비스)를 제공합니다.예를 들어, API 호출을 위해 자주 사용되는 HttpModule이나 데이터베이스 작업을 위한 TypeOrmMo

Controller클라이언트의 요청을 받아 처리하고 응답을 반환하는 역할REST API 엔드포인트를 노출하는데 사용한다.@Controller 데코레이터를 통해 hello 경로에서 시작함을 알 수 있고, 모든 표준 HTTP 메서드를 데코레이터 제공한다.매개변수와 쿼리 @
IOC와 DI기존에는 서비스를 사용하고 싶으면 아래와 같이 코드를 작성했다.this.appService = new AppService();위와 같이 직접 객체를 생성하면, AppController는 AppService의 구체적인 구현에 강하게 속한다.즉, 의존하는 서비
Service 일반적인 비즈니스 로직을 담당한다. 컨트롤러가 클라이언트의 요청을 처리하는데 필요한 작업을 처리한다. 데이터베이스의 데이터를 가져오거나 외부 API 호출 등의 데이터 처리 @Injectable 데코레이터를 사용하여 Nest LLC 컨테이너에서 관리된다

nestJs를 이용한 CRUD배울 것들: NestJS 기본 사용법, API 문서화, DTO, Validation, 데코레이터, Exception Filters, TypeORM, 인증, 테스트, 배포

Data Transfer Object(DTO)란?계층 간 데이터 전송을 위해 사용되는 객체API 요청에서 받아온 데이터를 타입에 맞게 바인딩 및 유효성 검사Service 계층과 Controller 계층 사이에 데이터를 전달Response 객체로 데이터를 클라이언트에 전

내장 파이프란?클라이언트에서 요청한 것들을 Route Handler가 실행되기 전 특정로직을 수행하는 것이다.유효성 검사: HTTP 요청을 처리할때 입력된 데이터가 DTO에 명싱되 형태와 일치하는지 확인데이터 변환: 입력된 데이터를 다른 형태로 변환ex) 문자열로 제공

데코레이터란?클래스나 클래스 멤버에 추가되어 동작을 변경하거나 부가적인 메타데이터를 제공클래스@Module(): 클래스를 모듈로 선언@Controller(): 클래스를 컨트롤러로 선언@Injectable(): 클래스를 서비스로 선언메서드 - HTTP 요청 메서드@Get

커스텀 데코레이터 만들기커스텀 데코레이터를 만들면 유지보수성 면에서 효율성이 좋다.ip를 가져오는 데코레이터를 만드는 파일(내가 원하는 데코레이터를 만들면 된다.)

Exception filters란?프로그램 실행 중 예외가 발생하면 해당 예외를 처리하는 코드로 라우팅자주 사용하는 것들BadRequestException: 클라이언트의 요청이 잘못되었음을 나타내는 예외입니다. 주로 클라이언트가 잘못된 요청을 보냈을 때 사용됩니다. H

로그 미들웨어란 클라이언트의 모든 요청 사항을 기록하여 서버의 상태를 모니터링하기 위한 미들웨어이다.문제가 발생할 때 빠르게 진단할 수 있다. 또한, 로그 데이터는 사용자의 행동 분석하는 등 데이터 분석 작업에도 활용할 수 있다.로그 기능을 지원하는 morgan, wi

configueModule이란?애플리케이션의 구성을 외부에서 로드하고 응용 프로그램 전체에서 사용할 수 있도록 만드는 것사용법패키지 다운: yarn add @nestjs/config

nestjs에서 typeorm 사용법yarn add @nestjs/typeorm typeorm pg

typeorm sql 이용해서 컬럼 추가 데이터 가져오기 1. 쿼리문 실행 2. entity에서 컬럼 추가

필요한 모듈 설치@nestjs/passportpassportpassport-local\-D @types/passport-local

cross-env란?개발 환경, 테스트 환경 및 프로덕션 환경에서 서로 다르게 실행하도록 env 파일 경로를 설정할 수 있다.yarn add cross-env 모듈 설치package.json에서 서버를 실행할 경로를 설정해준다.NODE_ENV = () 맞는 파일을 사용
요청이 라우트 핸들러로 전달되기 전에 특정 조건(인증, 권한 등)을 만족하는지 확인하는 역할을 한다.CanActivate 인터페이스를 구현하며, 이것을 통해 boolean을 반환해 요청을 허용할지 여부를 결정한다.
나만의 맞춤형 코드를 만들 수 있다. 이것을 통해 모든 컨트롤러에서 재사용할 수 있다.
우선 캐싱은 데이터를 임시 저장소인 캐시에 저장하여 데이터베이스를 거치지 않고, 빠르게 조회하는 방식이다.nest.JS는 기본적으로 캐시 모듈(Redis)을 제공하며, 이를 통해 손쉽게 캐싱을 구현할 수 있다.
nest.js에서 redis를 쉽게 통합할 수 있도록 도와주는 패키지이다.redis 서버와 연결redis를 사용한 데이터 캐싱redis의 Pub/Sub 기능 사용redis를 이용한 세션 관리 툴
데코레이터 Req, Res는 @nestjs/common에서 importResponse, Request는 express에서 import
npm install @types/pdfkit --save-devnpm install @types/multer --save-dev
entity의 필드를 return 하지 말고 req,res dto를 만들어 return plainToInstance(dto, 데이터); return 한다.(보안을 위해)
exceljs란?Excel 파일을 처리하기 위해 사용되는 라이브러리이다. 주로 데이터의 내보내기 및 가져오기 기능을 구현할 때 사용된다.사용 방법npm install exceljs
사용 이유
임의의 코드(메소드/함수)를 고정된 날짜/시간, 반복되는 간격 또는 지정된 간격 후에 한 번 실행하도록 스케줄링할 수 있다.npm install --save @nestjs/schedulehttps://docs.nestjs.com/techniques/task-s
문제(1)매월 1일에 실행되는 Cron해결방법onModuleInit()을 이용하여 서버가 재시작되면 호출문제(2) 해결방법
my-nest-project/│├── apps/│ ├── user-app/ │ │ ├── src/│ │ │ ├── controllers/ │ │ │ ├── dto/ │ │
두 개 이상의 모듈이 서로를 참조하여 의존하는 상황을 말한다. 각 모듈이 다른 모듈에 의존하기 때문에 의존성 해결이 복잡해지고, 애플리케이션이 정상 작동하지 않을 수도 있다.의존성 해결 어려움: 두 모듈이 서로를 참조할 경우, 어느 모듈을 먼저 로드해야 하는지 어렵다.
실시간 양방향 통신을 처리하는 라이브러리다. 서버와 클라이언트 간의 실시간 데이터 교환을 가능하게 한다.
이메일을 발송하기 위해 사용되는 라이브러리이메일 전송: SMTP 서버나 다른 이메일 전송 서비스를 통해 이메일을 전송할 수 있다.템플릿 지원: 이메일 내용이 동적일 때, EJS 등을 사용해 템플릿을 렌더링하고 이메일을 생성할 수 있다.첨부 파일: 이메일에 파일을 첨부할
파일/코드 1. events.gateway.ts 생성@WebSocketGateway(): 5500 소켓 서버 설정@WebSocketServer(): socket 서버 실행@SubscribeMessage('events'): events 네임 스페이스@MessageBody
user service -> admin service는 좋은 설계가 아니다.유저 서비스 코드를 어드민에서 사용하는거
socketio는 실행할 때, 웹페에지가 로드되거나 유저가 로그인을 할 때,socketid를 socket서버에 넣어야된다. 그래야 특정 유저에게 알람같은 걸 보낼 수 있음,그래ㅓ userId와 socketid를 매핑시켜야돔
Excel 파일(.xlsx)을 읽고 쓰는 데 사용되는 라이브러리이다. Excel 파일을 쉽게 다룰 수 있는 여러 기능을 제공한다.npm install xlsxExcel 파일 읽기: .xlsx 파일을 읽어들여 데이터를 자바스크립트 객체나 배열로 변환할 수 있다.Excel
userId와 clientId 매핑하여 Redis에 저장을 하여 유저를 판별하고 있다. 근데 새로고침이나 페이지 이동 시 clientId는 새로 발급되고, 그렇게 되면 현재 clientId와 전에 저장한 clientId는 다르기 때문에, 현재 userId를 가져올 수

Nest.js에 대해 깊이 배워보고 싶어서 새로 작성하고 싶었다.TypeScript 기반의 웹 애플리케이션을 만들기 위한 프레임워크로, Angular의 아키텍처에서 영감을 받았고, Express나 Fastify와 함께 사용될 수 있다. NestJS는 강력한 DI(의존성
고성능 부하 테스트 및 성능 테스트를 수행하기 위한 오픈 소스 도구이다. 주로 웹 애플리케이션, API, 서버, 데이터베이스 등을 테스트할 때 사용된다.다양한 테스트를 자동화하고 시뮬레이션할 수 있다.고성능: Node.js로 작성되어 있으며, 높은 성능을 자랑한다. 수
Artillery 라이브러리 설치 npm install -g artillery@latestartillery-test.json 파일 생성artillery run artillery-test.json 시작 명령어
JavaScript/TypeScript에서 객체의 스키마(구조)를 정의하고, 유효성을 검증할 수 있는 라이브러리안전성: 잘못된 데이터를 미리 체크할 수 있다.직관적: 스키마 정의 문법이 명확하고 간단하다.테스트에 유리: 입력이 유효한지 테스트하기 쉽다.유연성: 다양한
Joi 다운로드npm install Joiimport Joiimport \* as Joi from 'joi';환경변수를 불러오기 전에 Joi를 사용하여 타입 체크Env가 문자열이고, 'dev', 'prod'만 인정되고, 무조건 있어야 한다.DB_HOST가 문자열이고,

컨트롤러에서 제공되는 Body 데이터 값의 데이터의 변환(Transform)과 검증(Validation)을 처리하는 데 사용하는 도구데이터 변환: String -> Integer 변환데이터 검증: 입력된 값이 정상적인 값인지 확인, 아니라면 에러요청의 데이터를 가공하거
Query & Param에 우리는 Number를 원하는데, 예상치 못하게 String을 적는다면 서버가 터진다. ParseIntPipe를 이용하여 Number 타입이 아니라면 Number로 변환해준다.원래는 String 그리고 에러를 던진다.
기존 타입을 바탕으로 새로운 타입을 동적으로 생성할 수 있게 해주는 문법Partial: 클래스의 프로퍼티 정의를 모두 optional로 만든다.Pick: 특정 프로퍼티만 골라 사용할 수 있다.Omit: 특정 프로퍼티만 생략할 수 있다.Intersection: 두 타입의
모듈 다운로드npm install @ffmpeg-installer/ffmpegnpm install fluent-ffmpeg

프로젝트에서 Azure 연결
애플리케이션에 언제, 어디서, 무엇을 했는지 기록을 남기는 행위개발 중, 운영 중 문제 추적, 디버깅, 성능 분석, 보안 기록 같은 걸 위해 아주 중요하다.회원가입 API 호출 : 2025-04-11 10:00:12 POST /auth/signup 요청 받음 - use
Node.js에서 가장 오래되고 많이 쓰이는 로깅 라이브러리 중 하나포맷, 출력 방식 커스터마이징 용이(timestamp, colorize, json, 등등)콘솔, 파일, DB 등 여러 위치로 로그 전송 가능NestJS에서도 커스텀 Logger로 잘 통합 가능플러그인
npm i winston nest-winston @types/winston
페이스북에서 개발한 자바스크립트 테스트 프레임워크JavaScript 및 TypeScript 애플리케이션의 유닛 테스트, 통합 테스트, end-to-end 테스트를 작성하는 데 사용된다. Jest는 사용하기 쉽고 강력한 기능을 제공하여 개발자가 코드를 안정적으로 테스트할

테스트할 떄 의존성을 해결하는 방법이 다양하게 존재한다. 모든 의존성(데이터베이스 등)을 그대로 사용하는 테스트도 존재하지만 그런 테스트는 너무 무겁고 오래 걸린다. 일반적으로 의존성을 각자 객체로 스왑 후 사용한다.Mock는 상호작용 즉, 실행이 됐는지 안됐는지 검증
실제 함수를 흉내 내는 가짜 함수이다. 테스트에서 외부 의존성을 제거하고, 함수가 어떻게 호출되었는지 추적하거나, 특정 동작을 시뮬레이션하고 싶을 때 사용된다.대상 함수가 네트워크 요청을 보내거나, 데이터베이스에 접근하거나, 외부 라이브를 사용하거나, 다른 함수나 모듈

CatsController에 있는 로직들을 테스트 하겠다.설명서 같은 느낌테스트를 실행할 때마다 매번 실행해준다실제 모듈을 가져와서 사용할 수 있따.각각 함수 별로 한 번 묶으며 실행할 수 있다.it을 사용하여 실제 테스트 로직을 작성할 수 있다업로드중..
개별적인 함수나 모듈이 예상대로 작동하는지 확인하는 테스트이다, 주로 독립적이고 작은 단위(함수, 메서드)에 대해 테스트를 진행한다. 사용자의 관점에서 비즈니스 로직을 테스트하는 목적유닛테스트 조건: 독립적이어야 하며, 어떤 테스트도 다른 테스트에 의존하지 않아야 한
실제 api 주소를 실행하여 응답 값이 어떻게 되는지 처음부터 끝까지 실행하는 테스트를 목적
여러 개의 모듈, 함수를 함께 연결해서 테스트하는 방식이다.함께 작동하는 방식이 올바른지를 확인할 수 있다.

package.json jest coverage 경로 수정coverage 폴더 생성
Jest 사용법 > package.json 경로 설정 npm test 모든 spec.ts 파일을 실행한다. npm run test:auth auth 폴더 spec.ts 파일들만 실행한다. --coverage 어떤 코드가 실행됐는지 안됐는지 본다. > jest 경로 설정