본문 바로가기

Backend/NestJS

(47)
model의 역할 + 게시판의 기본 구성 살펴보기 ※ 인프런 '따라하면서 배우는 NestJS'강의를 시청하고 정리한 글입니다. 게시글의 구성 (기본) 아이디 - 게시글을 구분짓는 고유 식별자. id는 고유한 값(1개당 1아이디)이다. 공개/비공개글 - 게시글이 공개 아니면 비공개글로 설정해야 하므로 enum으로 설정 제목 게시글 날짜 작성자 ... 이런식으로 나누어볼 수 있다. 여기 강의에서 집중할 부분은 바로 아이디(id:string) 공개/비공개글(enum:boardStatus(PRIVATE,PUBLIC), 제목(title:string) 게시글(description:string) 이렇게 총 4가지 분야라고 보자. 이런 식으로 여기에 쓰이는 데이터 타입들을 한 번에 정리해주는 역할을 하는 곳이 model 이다. NestJS에서는 model.ts를 정의..
NestJS에서의 의존성 주입(Dependency Injection) NestJS로 Service를 작성하던 중에 항상 아래와 같이 작성하는 이유에 대해서 궁금했었다. constructor(private aaService : AaService) 1. private를 쓰는 이유? JS에서는 private,public,protected와 같은 접근제한자를 쓸 수 없다. (이제 알았다..) Typescript에서는 위와 같은 접근제한자를 지원하기 때문에 private와 같은 접근제한자를 constructor 내부에서 파라미터로 사용할 수 있다 2. boardsService : BoardsService boardService 파라미터에 BoardService 객체를 타입으로 지정해준다. 이 boardService 파라미터를 BoardsController 클래스 안에서 사용하기 위..
NestJS Controller,Service 톺아보기(+ Decorator/Handler 차이,Provider,@Injectable ) 확실히 집에 와서 다시 개발 공부를 할때면 일하면서 놓쳤던 부분들에 대해 아 그래서 그렇게 되는구나!라고 상기시킬 수 있다. 그래도 계속 포스팅 하면서 일하면서 만났던 내용들이나 부족했던 개념들 상기시키고, 될때까지, 익숙할때까지, 질릴때까지 계속 포스팅 작성할거다...! 집에 와서 시청한 영상은 인프런 '따라하면서 배우는 NestJS'이다. Decorator와 Handler의 차이 @Decorator -> ex) @Controller, @Service, @Entity, @Repository @Handler -> ex) @Get, @Post, @Patch, @Delete Decorator로 장식된 @Controller가 있다면, 클래스 내의 단순한 메소드가 Handler이다. @Controller('gr..
nest.cli.json에서 source root(프로그램 시작점) 찾기 NestJS로 프로젝트를 진행하면서 어떤 것은 src 내부부터 내 코드를 더해나갔지만, 어떤 프로젝트는 다른 폴더의 위치에서부터 프로그램을 작성해나갔다. NestJS 강의를 듣던 중 nest.cli.json의 source root를 알게 되었으며, 여기서부터 프로젝트가 시작된다는 것을 알게 되었다. 그래서 여기서부터 코드를 더해나가야 한다. nest.cli.json 예시 1 { "$schema": "https://json.schemastore.org/nest-cli", "collection": "@nestjs/schematics", "sourceRoot": "src", "compilerOptions": { "deleteOutDir": true } } sourceRoot가 src이다. 다른 프로젝트의 경우..
controller의 역할 ※ 본 영상은 Nomad Coder의 'NestJS로 API 만들기' 영상을 보고 작성한 내용입니다. 1. NestJS의 Controller와 다른 프레임워크와의 유사성 Java-Spring의 Controller, Express의 controller/router의 기능과 같다. 저번 포스팅에서도 언급했던 것처럼, main.ts+Controller+Service 이 셋은 뗄레야 뗄 수 없는 관계이다. 2. @Module의 역할 Module 모듈은 하나의 기능을 하는 앱이라고 생각하면 된다. ex) 유튜브에서는 video 모듈, photo 모듈이 필요할 것이다. 인증에 관한 모듈은 auth 모듈이 될 것이다. 3. Controller와 main.ts 그리고 Service와의 관계 [ main.ts ] imp..
localhost:3000시 Hello World!는 어디서 오는걸까? ※ 본 내용은 노마드코더 'NestJS로 API만들기'를 정리한 내용입니다. 일단 결론부터 보죠. NestJS 프로젝트를 만들기 위해서 nest new 프로젝트 명령어를 통하여 NestJS 프로젝트를 하나 생성했습니다. 아직 코드를 추가한 것은 없고, 디폴트(기본) 내용으로만 npm run start:dev를 통해 실행결과를 알아보았습니다. localhost:3000번은 왜 쓰고, 왜 브라우저에 결과값으로 Hello World!가 보이는 것인지 하나하나 파헤쳐보겠습니다. [main.ts] import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const a..
NestJS의 커맨드(명령어) 살펴보기 with Terminal Mac Terminal에 nest 를 입력하면 아래와 같이 Terminal에서 명령어로 파일을 만들때 어떤 축약어를 써야 하는지 한 눈에 볼 수 있다. 주로 module = mo, controller = co, service = s를 썼던 것 같다. 나머지는 일단 참고용으로 ~_~
[오류] TS2307: Cannot find module 'class-validator' or its corresponding type declarations 문제 상황 Nest.js에서 dto 파일에 class validator로부터 IsNotEmpty를 import 받아 사용하려던 중에 제목과 같이 TS2307: Cannot find module 'class-validator' or its corresponding type declarations 라는 에러가 발생하였다. 문제 원인 class-validator가 npm으로 설치되어 있지 않아 발생하는 문제였다. 문제 해결 터미널에서 아래와 같이 명령어를 입력한다. npm i --save class-validator class-transformer class validator을 설치하고 나면 import 부분의 class-validator 부분에서 빨간줄이 사라진다.
Nest.js에 모듈 추가하기(모듈,컨트롤러,서비스) Mac의 Terminal을 이용해서 Nest.js에 다양한 모듈을 추가하는 명령문들을 알아보자. 만약 boards 라는 이름의 모듈,컨트롤러,서비스를 생성한다고 하면(이들은 한 boards 라는 큰 디렉토리 안에 있는 모듈들이다) 모듈 nest g mo boards 컨트롤러 nest g co boards 서비스 nest g s boards 모듈 Module - mo 컨트롤러 controller - co 서비스 service - s 각각의 약어를 이용하여 터미널에 명령문을 입력해주면 된다.
[오류] Invalid schematic "billing". Please, ensure that "billing" exists in this collection. 문제 상황 Nest.js에서 billing app을 만드려고 했는데 제목과 같이 Invalid schematic "billing". Please, ensure that "billing" exists in this collection. 라는 에러가 발생하였다. nest g billing 문제 원인 nest g app billing nest에서 app을 만들거면 app 키워드를 써줘야 하는데, 이 부분이 누락되어 에러가 발생하였다. app 키워드를 터미널 커맨드창에 삽입해주면 정상적으로 Nest.js의 프로젝트에서 billing app이 만들어진다.