목록JavaScript/NestJS (15)
끄적이는 개발노트

이번 포스트에서는 이어서 cats 스키마에 대한 Module, Service, Controller를 생성하고 알아본다. 1. Module, Service, Controller 생성 우선 기본적인 내용을 담은 Module, Service, Controller를 생성하기 위해 nest generator를 실행한다. $> nest g mo cats $> nest g co cats $> nest g s cats 이전 포스트에서 생성한 cats schemas폴더를 자동생성된 cats 폴더에 옮겨준다. 스키마 파일은 원하는 곳에 저장할 수 있지만, 적절한(관련된) 객체 근처에 저장하는 것을 추천한다. 2. Module 수정 // cats.module.ts import { Module } from '@nestjs/c..

이번 포스트에서는 NestJS에 MongoDB를 연결하는 방법에 대해서 알아본다. 코드는 NestJS의 공식문서에서 제공하는 코드를 사용한다. https://docs.nestjs.kr/techniques/mongodb 네스트JS 한국어 매뉴얼 사이트 네스트JS 한국, 네스트JS Korea 한국어 매뉴얼 docs.nestjs.kr 1. MongoDB 설치 MongoDB 설치 방법은 해당 포스트를 참고한다. https://hbc3869.tistory.com/17 MongoDB 설치 이번 포스트에서는 Node.js에 MongoDB를 설치하는 방법을 알아본다. Mongo버전은 4.0 이상을 기반으로 하며, 공식문서를 참조한 포스트이다. https://docs.mongodb.com/v4.0/tutorial/ins..

이번 포스트에서는 테스트에 대해서 알아본다. 1. package.json 살펴보기 test에 해당하는 부분을 보면 jest를 사용하고 있다. Jest jest는 자바스크립트를 아주 쉽게 테스팅하는 npm패키지 .spec.ts 파일을 자동으로 찾아볼 수 있게 설정되어 있음 NestJS에서는 jest가 가능하게끔 기본적으로 제공해준다. 2. Unit Test 유닛 테스트는 시스템에서 함수, 클래스 같은 하나의 유닛만을 테스트하는 것이다. 우리가 유닛 테스트를 위해 사용할 명령어는 두개이다. test:watch -> .spec.ts 파일을 찾아 테스트를 실행함 test:cov -> 모든 .spec.ts 파일을 찾아 몇 줄이 테스팅되었는지 알려줌 테스트코드 // movies.service.spec.ts impo..

이번 포스트에서는 create와 update에 타입을 부여하기 위해 사용된 DTO기능을 알아본다. 1. DTO란? DTO (Data Transter Object) 데이터 전송 객체로 프로세스 간에 데이터를 전달하는 객체 DTO는 프로세스 간에 호출의 수를 줄이고 하나의 호출만으로 서비스가 이용되게 해준다. 따라서, 개발자에게 코드를 더 간결하게 만들어주고, NestJS에서는 들어오는 쿼리에 대해 유효성을 검사하게 해준다. 2. npm 설치 클래스 유효성 검사와 이따가 알아볼 기능을 위해 npm을 미리 설치한다. $> npm i class-validator class-transformer @nestjs/mapped-types 3. DTO 파일 생성 dto폴더를 만들고 그 안에 필요한 파일들을 만들어준다. ..

이번 포스트에서는 지금까지 익힌 기본 사용법을 통해 CRUD를 실행하는 Movie Project의 전체코드를 소개하며 개념을 정리해본다. 이 전체코드에는 DTO 개념도 적용된 상태인데 DTO에 해당하는 파일(코드)들은 다음 포스트에서 다뤄본다. 1. 폴더구조 2. 코드소개 controller // movies.controller.ts import { Controller, Get, Post, Patch, Delete, Param, Body, Query } from '@nestjs/common'; import { MoviesService } from './movies.service'; import { Movie } from './entities/movie.entity'; import { CreateMovie..

이번 포스트에서는 service를 다뤄본다. NestJS의 이전 포스트를 봤으면 알겠지만, controller는 url을 매핑하고, 리퀘스트를 받고, query를 넘기고 함수를 리턴하는 역할을 한다. 그렇다면 service는 무슨 역할을 할까? 바로 로직을 관리하는 역할을 한다. 이 때, Single-responsibility principle 정책을 통해 하나의 module, class는 반드시 하나의 기능을 담당해야 한다는 정책이다. 이를 명심하고 service를 만들어본다. 1. service 생성 controller를 생성할 때와 마찬가지로 nest g 를 통해 생성한다. $> nest g s 이름을 똑같이 movies로 설정해주면 다음과 같이 자동 파일 생성과 import를 해준다. 2. 사용할..