nest(8)
-
Repository Pattern
Service와 DB 사이에 중개자 역할을 하는 패턴 Service가 다수일 경우 그 사이에서 일어나는 순환참조 문제(해결할 수 있으나 최선은 아님)를 해소하고 Service 레이어에서 데이터의 출처와 관계없이 동일한 방식으로 DB에 접근할 수 있다. ex) DB가 다수일 경우 각 DB에 접근하는 쿼리가 다름. Repository 패턴을 적용하므로써 이를 해결할 수 있다. 가령, DB를 MongoDB에서 MySQL로 변경할 경우 Repository 패턴을 적용하면 Repository의 코드만 수정하면 되지만, Repository를 두지 않는 경우 각 Service의 코드를 MySQL에 맞게 수정해야한다. //cats.service.ts //Service에 Repository 의존성 주입 export cl..
2022.09.17 -
예외처리
Exception filter & Pipes Nest에는 애플리케이션 전체에서 처리되지 않은 모든 예외를 처리하는 예외 레이어 가 내장 애플리케이션 코드에서 예외를 처리하지 않으면 이 계층에서 예외를 포착한 다음 자동으로 적절한 사용자 친화적인 응답을 보낸다. 기본적으로 이 작업은 기본 제공 전역 예외 필터 에 의해 수행 이 필터 는 유형 HttpException(및 해당 하위 클래스)의 예외를 처리. 예외가 인식되지 않는 경우 ( HttpException에서 상속하는 클래스도 아니고 클래스 도 아님 HttpException) 기본 제공 예외 필터는 다음과 같은 기본 JSON 응답을 생성. //http-exception.filter.ts import { ExceptionFilter, Catch, Argu..
2022.09.06 -
미들웨어
라우트 핸들러 이전에 호출되는 함수. 미들웨어 기능은 요청 및 응답 객체에 대한 액세스 권한이 next()있다. (기본적으로 익스프레스 미들웨어와 동일) 미들웨어 기능은 다음 작업을 수행할 수 있다. 모든 코드를 실행 요청 및 응답 개체를 변경 요청-응답 주기를 종료 스택의 다음 미들웨어 함수를 호출 현재 미들웨어 함수가 요청-응답 주기를 종료하지 않으면 next()다음 미들웨어 함수에 제어를 전달하기 위해 호출해야 한다. 그렇지 않으면 요청이 중단. Nest 미들웨어는 Dependency Injection을 완벽하게 지원. 공급자 및 컨트롤러와 마찬가지로 동일한 모듈 내에서 사용 가능한 종속성을 주입 할 수 있다. nest g middleware -이름- Logger middleware 만들기 함수 또..
2022.09.06 -
Module / 캡슐화
구성 요소를 구성하는 효과적인 방법으로 모듈을 사용 어떤 느낌으로 받아들였냐면, 교통정리 해주는 느낌이다. 너는 여기서 받아들여서 쓸거고(imports), 너는 소비자고(controllers) , 너는 공급자고(providers) , 너는 딴데서도 쓸 수 있게할거고(exports)~ //boards.module.ts @Module({ imports: [ TypeOrmModule.forFeature([BoardRepository]) ], controllers: [BoardsController], providers: [BoardsService] }) export class BoardsModule {} nest 공식 문서 providers Nest 인젝터에 의해 인스턴스화되고 적어도 이 모듈에서 공유될 수 있..
2022.09.04 -
Providers/ DI
Providers는 Nest의 기본 개념이다. Many of the basic Nest classes may be treated as a provider – services, repositories, factories, helpers, and so on. The main idea of a provider is that it can be injected as a dependency; this means objects can create various relationships with each other, and the function of "wiring up" instances of objects can largely be delegated to the Nest runtime system. (한글로 읽으면..
2022.09.04 -
Controller
Nest의 Controller는 들어오는 요청 을 처리 하고 클라이언트에 응답 을 반환 하는 역할. 기본 컨트롤러를 만들기 위해 클래스와 데코레이터 를 사용 쓰다보니까 점점 눈에 익는다.. import { Controller, Get, Query, Post, Body, Put, Param, Delete } from '@nestjs/common'; import { CreateCatDto, UpdateCatDto, ListAllEntities } from './dto'; @Controller('cats') //localhost:3000/cats export class CatsController { @Post() create(@Body() createCatDto: CreateCatDto) { return 'T..
2022.09.04