More issues
[nest.js] TypeError: config.get is not a function
import * as config from 'config';
TypeError: config.get is not a function
at bootstrap (D:\workspace\crud-tutorial\src\main.ts:11:27)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
강의에서 하란데로 import 했는데 error 가 발생한다.
import config = require( "config" );
이렇게 변경하면 error가 사라진다.
[nest.js] jwt token 과 cookie 를 이용한 login 구현
jwt 를 이용하여 인증하는 api application은 local test가 불편하다.
인증시 token이 bearer token 형태일 경우
postman 에서 매번 login 후 token 값 알아내기 -> api 마다 수동으로 token 값 넣기 식으로 진행된다.
cookie 에 token 을 넣고 알아서 인증단계를 거치면 이런 노가다가 필요없다.
사전준비
패키지를 설치해 준다.
npm i
[nest.js] jwt를 이용해서 request 에 사용자 정보 넣기
회원기반 사이트는 반드시 인증이 필요하다.
웹개발에서 jwt라는 쉬운 방법이 있는데 nest.js에서도 지원이 된다.
local에서는 jwt로 발급된 token을 bearer token 이나 cookie를 이용하여 테스트 할 수 있다.
cookie를 이용한 방법을 소개한다.
a. strategy
인증을 담당하는 module에 import할 strategy 클래스 작성
validate에서 return되는 객체는 request 에 담겨진다.
import { Injectable, NotFoundException, UnauthorizedException
[nest.js] Custom Repository
nest.js typeorm 0.2.x 까지는 @EntityRepository 데코레이터를 사용해서 쉽게 주입이 가능해 졌으나 0.3.x 로 올라가면서 deprecated 되었다. 아무래도 deprecated 된 건 꺼림칙하다.
custom repository를 포기하는건 거의 실무에선 불가에 가까운데 다행히도 기존처럼 사용 가능하다.
본인도 nest.js를 한지 한달도 안된 상태라 깊게는 모르므로 간략히 이해가는 선에서 정리한다.
[nest.js] 쿠키를 이용한 인증처리
어느 정도 로긴을 구현한 상태를 가정으로 설명합니다.
관련 패키지 설치
npm install --save cookie-parser
npm install --save-dev @types/cookie-parser
로긴 소스코드 수정
@Post( '/login' )
async login(
@Body( ValidationPipe ) dto: UserDTO,
@Res( { passthrough : true } ) res : Response
) : Promise<object>
{
const accessToken : object = await this.authService.login( dto );
//쿠키에
TypeError: (0 , cookie_parser_1.default) is not a function
발생 : app.use( cookieParser() );
원인 : tsconfig 설정값 누락
조치: tsconfig 에 "esModuleInterop": true 추가
[TypeORM] N+1 문제와 Eager and Lazy Relations
출처 : https://dawitblog.tistory.com/186
N+1 문제
ORM을 사용하면서 항상 주의해야 할 문제점 중 하나가 N + 1 문제이다.
N + 1 문제란, 어떤 테이블의 참조된 데이터를 가져오기 위해 해당 (테이블 조회(1) + 참조된 데이터 조회(N)) 회의 쿼리를 날리는 문제를 이야기한다. JPA에서 많이 언급되는데 JPA 에서만 국한된 이야기는 아니고
nest.js 패키지 설치
한방설치
npm i -g @nestjs/cli&&
npm i --save @nestjs/typeorm typeorm mysql2&&
npm i uuid&&
npm i -D @types/uuid&&
nest g module auth&&
npm i --save class-validator class-transformer&&
npm i @nestjs/jwt @nestjs/passport passport passport-jwt&
nest.js 프로젝트 생성 on ubuntu 22
1. node.js 설치
sudo apt update
sudo apt install -y nodejs
nodejs -v
sudo apt install npm
2. nest.js 설치
npm i -g @nestjs/cli
3. nest.js 프로젝트 생성
nest new 프로젝트명