본문 바로가기
반응형

nestJS21

[NestJS] NestJS에서 cors error 해결 src/main.ts에서 아래 코드 내용을 추가한다. import { NestFactory } from '@nestjs/core'; async function bootstrap() { const app = await NestFactory.create(AppModule); ... app.enableCors({ origin: [ "http://[client 주소 (frontend 주소)]", ], credentials: true, }); ... } bootstrap(); 2023. 11. 13.
[Docker & NestJS] 다단계 도커를 이용한 이미지 크기 줄이고 이미지 생성 이미지 크기를 줄이는 방법: 다단계 도커를 활용하여 효율적으로 이미지를 만든 포스팅 https://www.tomray.dev/nestjs-docker-production Ultimate Guide: NestJS Dockerfile For Production [2022] Learn how to write a Dockerfile that creates a production optimized image using the NodeJS Alpine image and multistage builds. www.tomray.dev 해당 내용을 프로젝트에 맞게 일부 수정한 후 새롭게 이미지를 빌드해보니 이미지 크기가 절반으로 줄어든다. FROM node:18-alpine AS base RUN apk add --no-c.. 2023. 9. 5.
[NestJS] vscode Delete eslint (prettier/prettier)오류 //.eslntrc.js 에서 해당 내용추가 rules: { 'prettier/prettier': [ 'error', { endOfLine: 'auto', }, ], }, 2023. 8. 24.
[MongoDB, NestJS] DB 트랜잭션을 이용한 자원소비 코드 [NestJS, MongoDB] DB 자원(임계구역)에 동시접근할 때, 트랜잭션을 이용해 자원소비 제어 코드 Why? 1. DB자원이 0이하로 내려가지 않게 백엔드에서 구현한다. (자원이 0이하면 소비할 수 없고 Error처리) 2. 하지만 트랜잭션을 걸어주지 않는다면 DB 임계구역에 있는 자원에 동시에 접근하여 소비하여 자원이 동시에 -2가 되어 자원이 -1이 되는 경우가 있다. 이를 해결하기 위해 트랜잭션을 걸어주는 코드이다. (동시에 접근하는 것을 방지한다) async spendResource() { const session = await this.model.db.startSession(); session.startTransaction(); try{ // 자원이 없으면 예외처리 추가 부분 (roll.. 2023. 3. 26.
[MongoDB] 빠른 탐색을 위한 인덱싱(indexing) NestJS(typegoose)에서 MongoDB를 빠르게 탐색하기 위해 인덱스를 사용하는 방법, explain.executionStats를 사용하여 실행속도 확인 아래와 같이 십만개(100,000)의 더미 유저 데이터가 있다. 데이터의 형식은 1. userBase.name이 userDummy0, userDummy1, userDummy2, ... , userDummy99999형식으로 되어 있다. 2. userBase.role은 Wrrior, Thief, Magician 중에 랜덤하게 생성되어 있다. 1. NestJS에서 Index 생성 이전 'userBase.role'이 'Magician'이고 'userBase.name'에 '3'이 포함된 더미 유저데이터를 찾을 때 걸리는 시간을 찾는 코드 async g.. 2023. 3. 6.
[NestJS] @ValidationNested로 하위 연관 dto 검증하기 1. ValidationPipe = @Type, 2. 하위 연관 dto 검증 = @ValidateNested 아래 코드의 문제점 export class UserInfo { @ApiProperty({ type: Date }) @IsDateString() @IsOptional() @prop() playTime?: Date; @prop({ type: () => userStrongInfo }) @ApiProperty({ type: () => userStrongInfo }) @IsDefined() @Type(() => userStrongInfo) public userPower: userStrongInfo; @prop({ type: () => userBaseInfo }) @ApiProperty({ descripti.. 2023. 3. 4.
[Mongoose] Model.events, Model관련 Error 처리 [Mongoose] Model.events, Model관련 NestJS Error 처리 및 try.. catch문클린코드 Model.events 1. 발생한 오류를 보고하는 이벤트 이미터. 전역 오류 처리에 유용하다. 2. Model 관련 Method를 처리할 때 따로 try.. catch문을 사용하지 않아도 된다. 예시코드) MyModel.events.on('error', err => console.log(err.message)); await MyModel.findOne({ _id: 'Not a valid ObjectId' }).catch(noop); 출력값 Cast to ObjectId failed for value "Not a valid ObjectId" (type string) at path "_.. 2023. 3. 1.
[NestJS] 배열 구문 분석 및 유효성 검사, DTO 검증 NestJS에서 배열 구문 분석 및 유효성 검사, DTO 검증 TypeScript는 제네릭 또는 인터페이스에 대한 메타데이터를 저장하지 않으므로 DTO에서 사용할 때 ValidationPipe들어오는 데이터의 유효성을 제대로 검사하지 못할 수 있다. 0-1). 아래와 같은 CreateUserDto가 있다고 하자. 0-2). 예를 들어 아래 Body에 CreateUserDto의 속성들을 빈값으로 넣어준다. 1-1) 다음 코드에서는 0-2)같은 createUserDto배열의 내용들이 올바르게 유효성이 검사되지 않는다. @Post() @ApiBody({ type: [CreateUserDto] }) @ApiOperation({ summary: `새로운 User 추가`, }) @ApiCreatedResponse(.. 2023. 2. 23.
[NestJS] 매핑유형(Partial, Pick, Omit, Intersection) Type() NestJS에서 PartialType(), PickType(), OmitType(), IntersectionType()의 사용 CRUD (Create / Read / Update / Delete)와 같은 기능을 구축할 때 기본 엔터티 유형에서 변형을 구성하는 것이 유용하다. Nest는 이 작업을 보다 편리하게 만들기 위해 유형 변환을 수행하는 여러 유틸리티 기능을 제공한다. 입력 유효성 검사 유형(DTO)을 빌드할 때 동일한 유형에서 생성 및 업데이트 변형을 빌드하는 것이 유용한 경우가 많다 . 예를 들어 생성 변형은 모든 필드를 요구할 수 있지만 업데이트 변형은 모든 필드를 선택 사항으로 만들 수 있다. Nest는 PartialType()이 작업을 더 쉽게 만들고 상용구를 최소화하기 위한 유틸리티 기능.. 2023. 2. 23.
[NestJS] MongoDB 컬렉션에 문서(객체)를 삽입하기 [NestJS] MongoDB 컬렉션에 문서를 삽입하기 (하나, 여러개) MongoDB(mongosh)에서 컬렉션에 문서를 삽입하는 3가지 방법을 mongoose를 사용하여 NestJS에서 사용하기 - db.collection.insert(): 하나 혹은 여러개의 문서를 삽입한다. - db.collection.insertOne(): 하나의 문서를 삽입한다. - db.collection.insertMany(): 여러개의 문서를 삽입한다. 1. 하나의 객체(문서) 생성(db.collection.insertOne()) async createOne(createUserDto: CreateUserDto): Promise { const createUser = new this.model(createUserDto); r.. 2023. 2. 21.
반응형