nestjs

TypeORM을 배우다. 1. TypeORM TypeORM은 node.js에서 실행되고 TypeScript로 작성된 객체 관계형 매퍼 라이브러리이다. TypeORM은 MySQL, PostgresSQL, MariaDB, MS SQL Server, Oracle등 여러 데이터베이스를 지원한다. ORM은 객체와 관계형 데이터베이스의 데이터를 자동으로 변형 및 연결하는 작업이다. ORM을 이용한 개발은 객체와 데이터베이스의 변형에 유연하게 사용할 수 있다. 모델을 기반으로 데이터베이스 테이블 체계를 자동으로 생성한다. 데이터 베이스에서 개체를 쉽게 삽입, 업데이트, 삭제할 수 있다. 아래(파랑)는 기존에 자바스크립트로 DB의 데이터에 접근하는 방법으로 쿼리문을 직접 작성해야했다. 하지만 ORM을 사용하면(빨강) ..
상태 업데이트의 유효성 검사 기능을 수행하는 커스텀 파이프를 만들다. 1. Custom Pipe 커스텀 파이프는 Pipe Transform이란 인터페이스에서 transform 메서드를 사용해서 NestJS가 인자를 처리하게 만들 수 있다. transform 메서드는 value와 metatdat 파라미터를 가지는데, value는 실제 값, metadata는 value에 대한 자세한 정보가 담겨있는 메타데이터이다. value만 있어도 된다. transform 메서드에서 Return 된 값은 Route 핸들러로 전해지고, 예외가 발생하면 클라이언트에 바로 전해진다. 2. 커스텀 파이프 폴더 및 파일 생성 boards 폴더에 pipes 폴더를 새로 생성한다. pipes 폴더 내에 파이프 파일을 만든다. 나는 보..
결괏값이 없을 때 예외 처리를 배우다. https://immune01.tistory.com/entry/NestJS-Param%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-ID%EA%B8%B0%EC%A4%80-%EA%B2%8C%EC%8B%9C%EB%AC%BC-%EC%B0%BE%EA%B8%B0 [NestJS] Param을 활용한 ID기준 게시물 찾기 Param을 활용하여 게시물 id를 기준으로 게시물을 찾는 기능을 만들다. 1. ID로 게시물 찾기 Service 기능 구현 Board에 게시물마다 고유한 id를 주었으니까 id로 특정 게시물을 찾을 수 있다. boards.service immune01.tistory.com 위 게시물에서 ID Param을 기준으로 게시물을 찾는 getBoa..
인수를 처리하는 Pipe를 배우다. 1. Pipe 파이프는 @Injectable() 데코레이터로 주석이 달린 클래스이다. 파이프는 data transformation과 data validation을 위해서 사용된다. 파이프는 컨트롤러 경로 처리기에 의해 처리되는 인수에 대해 작동한다. Nest는 메서드가 호출되기 직전에 파이프를 삽입하고 파이프는 메서드로 향하는 인수를 수신하고 이에 대해 작동한다. Data transformation은 입력 데이터를 원하는 형식으로 변환하는 것이다. 예를들어서 string형식을 int로 변환하는 것. Data validation은 입력 데이터를 평가하고 유효한 경우 그대로 전달하면 된다. 그렇지 않은 경우 예외 처리를 해줘야 한다. 예를 들어 입력 데이터의 길이가 5자 ..
Param을 활용하여 게시물 id를 기준으로 게시물을 찾는 기능을 만들다. 1. ID로 게시물 찾기 Service 기능 구현 Board에 게시물마다 고유한 id를 주었으니까 id로 특정 게시물을 찾을 수 있다. boards.service.ts에서 service 기능 구현을 먼저 진행하겠다. controller에서 먼저 request 받아도 상관없다. // boards.service.ts getBoardById(id: string): Board { return this.boards.find((board) => board.id === id); } getBoardById 메서드를 만들고 로직을 짠다. 일단 매개변수로 id를 받는다. 타입은 당연히 string이다. return값의 타입은 직접 만든 타입인 Bo..
계층 간 데이터를 교환하는 객체인 DTO(Data Transfer Object)를 배우다. 1. DTO? DTO는 계층 간 데이터 교환을 위한 객체이다. DB에서 데이터를 얻어 Service나 Controller 등으로 데이터를 보낼 때 사용하는 객체이다. DTO는 데이터가 네트워크를 통해 전송되는 방법을 정의하는 객체이다. interface나 class를 이용해서 정의할 수 있다. NestJS에서는 class를 사용하는 것을 추천하고 있다. class는 interface와는 다르게 런타임에서 작동하기 때문에 파이프 같은 기능을 이용할 때 더 유용하다. 2. DTO를 사용하는 이유 DTO를 사용하면 데이터 유효성을 체크하는데 효율적이고 더 안정적인 코드를 만들 수 있으며 타입스크립트의 타입으로도 사용한다..
게시물 생성과 관련된 Service의 로직 작성과 Controller의 request, response 방법을 배우다 1. Service에서 게시물 생성 로직 작성하기 서비스 부분은 기능 로직을 작성하는 파일이다. 나는 게시물을 생성하면 전체 게시물 배열에 게시물 1개를 추가하는 로직을 작성할 것이다. 먼저 Service에서 로직을 처리한 후 Controller에서 서비스 메서드를 불러와서 사용해야 한다. // boards.service.ts import { Injectable } from '@nestjs/common'; import { Board, BoardStatus } from './board.model'; import { v1 as uuid } from 'uuid'; @Injectable() ex..
게시물 데이터를 다루는 모델 파일을 생성하다. 1. Model 정의하기 나는 게시물(Board)을 작성, 생성, 수정, 삭제가 가능한 사이트를 만들 것이다. 게시물 생성 기능을 만들기 전에 Board Model을 정의해야 한다. 게시물에 필요한 데이터가 어떤 것이 있는지 정의해 주기 위해서 board model을 만든다. 게시물에 필요한 데이터로는 게시물의 고유한 ID, 이름, 설명, 공개 or 비공개 등의 데이터가 필요하다. 2. board.model.ts 파일 생성 전 포스트에서 만든 컨트롤러, 모듈, 서비스가 들어있는 폴더인 boards 폴더에 board.model.ts 파일을 직접 생성해 준다. 이번에는 명령어로 생성하는 것이 아니라 직접 파일을 만들어줘야 한다. model을 정의하기 위해서는 C..
이뮨01
'nestjs' 태그의 글 목록