dev/nestjs (14) 썸네일형 리스트형 nestjs 프로젝트 생성 시 오류 (Failed to execute command: npm install --silent) nestjs 프로젝트를 생성하는데 오류가 발생했다. nest new nest_1 인터넷에서 찾아보니 kt회선 문제라도 해서 registry를 바꿔서 설치하라고 하는 방법이 있었다. npm config set registry https://registry.npmjs.cf/ nest new nest_1 npm config set registry https://registry.npmjs.org/ 이렇게 해도 오류가 뜬다면 sudo를 이용해서 생성하자.. sudo nest new nest_1 FileFieldsInterceptor 이미지 업로드를 위해 인터셉터를 사용할 때 FilesInterceptor() 또는 FileInterceptor() 를 사용한다. 만약 이미지가 서로 다른 키값을 가져야 할 때 FileFieldsInterceptor()를 사용한다. FormData formData = FormData.fromMap({ "image1": multiPartImageFile1, "image2": multiPartImageFile2, "name": name }); 이런 식으로 이미지 2개를 업로드 하는데 이미지 파일1과 2가 다른 폴더에 저장되어야 한다면 키값을 다르게 해서 보내준다. @UseInterceptors( FileFieldsInterceptor( // 필드값 구분 [ { name: 'image1', maxCount: 1.. MariaDB 연동 데이터베이스 연동을 위해 @nestjs/typeorm 패키지를 설치한다. (mysql2 인것은 promise를 지원하기 때문이라고 한다. 그냥 mysql은 promise-mysql을 따로 설치해야한다고 한다.) npm install --save @nestjs/typeorm typeorm mysql2 .env 파일에 DB 관련 정보를 입력하고 AppModule에 TypeOrmModule을 import 해준다. // app.module.ts import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { UserMod.. 인터셉터 인터셉터는 @Injectable() 데코레이터가 달린 클래스이며 NestInterceptor 인터페이스를 구현한다. 인터셉터는 클라이언트 요청이 컨트롤러 전, 후에 사용된다. 인터셉터는 AOP (Aspect Oriented Programming) 기술을 따라 이러한 기능이 있다고 한다. 메서드 실행 전/후에 추가 로직 바인딩 함수에서 반환된 결과 변환 함수에서 발생한 예외 변환 기본 기능 동작 확장 특정 조건에 따라 함수를 완전히 재정의합니다(예: 캐싱 목적). AOP 란 관점 지향 프로그래밍이라고 한다. 여러 기능이 있으면 공통으로 수행하는 기능도 존재할 것인데, 이 공통적인 기능을 수평적으로 묶어서 모듈화한 것이 AOP 패턴으로 수평적관심사를 분리하여 모듈성을 높이는 것이라고 한다. 인터셉터는 의존.. HTTP module NestJs는 Axios가 내장된 HttpModule을 이용해서 HTTP 요청을 수행한다. @nestjs/axios 설치 npm install @nestjs/axios axios HttpModule을 import한다. axios 옵션을 추가 할 수도 있다. (옵션보기) // test.module.ts import { Module } from '@nestjs/common'; import { TestController } from './test.controller'; import { HttpModule } from '@nestjs/axios'; @Module({ imports: [HttpModule], controllers: [TestController], }) export class TestModule {.. 환경 변수 응용 프로그램은 환경에 따라 다르게 실행될 수도 있기에 환경에 따라 다른 구성을 해야한다. nodejs 에서는 .env 키-값쌍을 포함하는 파일을 이용해 각 환경을 나타내는 것이 일반적이다. nestjs 에서는 적절한 파일을 로드하는 ConfigureModule을 만드는 것이 좋은 방법이다. ConfigureModule npm i --save @nestjs/config @nest/config 는 내부적으로 dotenv를 사용한다. 패키지 설치후 ConfigModule을 루트에서 import해준다. // app.module.ts import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { .. passport, jwt 로그인 인증을 위해 passport 라이브러리를 사용한다. 인증이 확인되면 헤더의 인증토큰을 위해 jwt를 발행한다. 요청에서 유효한 jwt인지 확인한다. passport 패키지를 설치한다.. npm install --save-dev @types/passport-local npm install --save @nestjs/passport passport passport-local auth 모듈과 서비스를 생성한다. nest g module auth nest g service auth UserService에 유저를 확인하는 메서드 하나를 만들어준다. // user.service.ts export type User = any; @Injectable() export class UserService { priva.. 가드 Nestjs에서 인증 및 인가, 권한 체크를 위해 Guard를 사용한다. Express는 미들웨어에서 처리했으나 next() 함수 다음에 어느 핸들러가 실행되는지 알 수 없다. 하지만 가드는 ExecutionContext 인스턴스에 접근하기에 다음 실행 작업을 알 수 있다. 모든 가드는 canActivate() 함수를 구현하고 단일 인자로 ExecutionContext 인스턴스를 받는다. 불리언 값으로 리턴을 한다. // roles.guard.ts import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; import { Observable } from 'rxjs'; @Injectable() export class RolesGu.. 이전 1 2 다음