일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- BFS
- 수학
- 프로그래머스
- 자바스크립트
- HTTP
- javascript
- 그래프
- 프로그래머스 레벨 2
- typescript
- 백준
- Crawling
- 크롤링
- 알고리즘
- HTTP 완벽 가이드
- 소켓
- dfs
- type challenge
- 타입 챌린지
- 타입스크립트
- 레벨 1
- Nestjs
- Algorithm
- TCP
- 문자열
- Node.js
- 쉬운 문제
- dp
- 가천대
- ip
- socket
- Today
- Total
목록Nestjs (10)
kakasoo
내가 적용한 시점에는 일일 다운로드 3만 건이었고, 현재는 5만건인 라이브러리다. 서비스에서도 사용하고 있는데 사용성이 무척 좋아서 공유한다. Installation # with npm npm install @liaoliaots/nestjs-redis ioredis # with yarn yarn add @liaoliaots/nestjs-redis ioredis # with pnpm pnpm add @liaoliaots/nestjs-redis ioredis npm: @liaoliaots/nestjs-redis 라이브러리는 @liaoliaots/nestjs-redis 와 **ioredis 이렇게 두 개를 설치해야 하고, 노드 버전은 12.22 이상, NestJS는 9.0.0 이상, ioredis는 5.0.0..
이번에 테스팅할 API는? import { TypedBody, TypedRoute } from '@nestia/core'; import { Controller } from '@nestjs/common'; import { JwtService } from '@nestjs/jwt'; import { createResponseForm, ResponseForm } from '../interceptors/transform.interceptor'; import { CreateUserDto } from '../models/dtos/create-user.dto'; import { DecodedUserToken } from '../models/tables/user.entity'; import { UsersService }..
이 글을 찾아본 것은 이미 Nestia를 알고 온 사람들일 거라 생각되기 때문에 간단한 설명만 적자면, Nestia란? Node.js, TypeScript 서버의 장점인 클라이언트와 동일한 언어 사용을 극대화하는 라이브러리라고 할 수 있다. 동일한 언어를 사용한다는 것은 서버 개발자가 미리 정의한 타입의 중복 개발을 막을 수 있다는 의미가 된다. 이로 인해 프론트 개발자는 이미 개발된 타입과 SDK를 사용해 좀 더 UI/UX 측면에 집중할 수 있게 된다. 프로젝트 생성 $ npm i -g @nestjs/cli $ nest new project-name 프로젝트 생성은 동일하게 진행해주면 된다. Nestia를 만드신 Samchon님의 레포지토리 예제 대부분은 본인 색채가 강하지만, 아래는 참고할 만 했다...
설치해야 하는 패키지 종류 $ npm i aws-sdk/client-s3 # 3.259.0 $ npm i multer # ^1.4.3" $ npm i multer-s3 # ^3.0.1 $ npm i @types/multer-s3 --save-dev # ^.3.0.0 일단 필요한 package들을 install한다. s3 package들의 경우 업데이트를 하면서 기존의 버전이 호환되지 않는 경우가 줄곧 발생한다. 혹시 몰라 버전도 주석으로 달아놓았으니 호환이 되지 않으면 버전을 맞추던가, 아니면 명시된 버전으로 진행하면 된다. NestJS에서 클라이언트로부터 이미지 받기 @Post() async upload(@UploadedFiles() files: Express.MulterS3.File[]) { if (..
import { SchemaObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface'; export const ERROR = { ALREADY_CREATED_EMAIL: { code: 4001, message: '이미 생성된 이메일입니다.' }, NO_AUTH_TOKEN: { code: 4002, message: '인증이 필요합니다.' }, IS_SAME_POSITION: { code: 4003, message: '이미지의 정렬 값이 동일한 경우가 존재합니다.' }, } as const; type KeyOfError = keyof typeof ERROR; type ValueOfError = (typeof ERROR)[KeyOfError..
import { BadRequestException, ExecutionContext, Injectable } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { ERROR } from '@root/config/constant/error'; import { DecodedUserToken } from '@root/types'; @Injectable() export class JwtGuard extends AuthGuard('jwt') { handleRequest( err: any, user: any, info: any, context: ExecutionContext, status?: any, ): TUser { if (i..
// package.json의 일부 { "dependencies": { "@nestjs/common": "^9.2.1", "@nestjs/testing": "^9.2.1", "typescript": "^4.9.4" }, "devDependencies": { "@types/jest": "^29.2.5", "@types/node": "^18.11.18", "jest": "^29.3.1", "ts-jest": "^29.0.3" }, } 최소한의 라이브러리로 위와 같이 install을 진행했다. NestJS 라이브러리를 만들 것이기 때문에 @nestjs/common과 @nestjs/testing을 install 하였고, typescript를 쓰기 위해 typescript library와 각종 타입, 테스트를 위..
const users = await this .createQueryBuilder('user') .withDeleted() .where('user.id = :userId', { userId }) .andWhere((qb) => { // 지금까지 결제한 횟수를 알기 위해 OrderInfo 라는 Entity를 카운트한다. const subQuery = qb .subQuery() .select('COUNT(*)') .from(OrderInfoEntity, 'oi') .where('oi.userId = :userId', { userId }) .getQuery(); return `${subQuery}
export interface Type extends Function { new (...args: any[]): T; } NestJS Swagger Library에는 위와 같은 interface가 정의되어 있다. 이 타입은 신기하게도 내부에 new 키워드를 사용하고 있으며, 전개연산자와 제너릭을 모두 쓰고 있다. 이 인터페이스를 어떻게 해석하면 좋을까? 단계를 나눠서 차례대로 설명하면 아래처럼 표현할 수 있다. // NOTE 1 interface MyType extends Function { keyName: 'kakasooFunction'; } 임시로 MyType이라는 interface를 만들었다. 이 인터페이스는 Function 이라는 인터페이스를 확장하여 keyName이라는 프로퍼티를 가지고 있다. ..
소개 NestJS는 Express ( 또는 fastify ) 위에 추상화된 프레임워크로, 기존의 라이브러리와 호환되면서도 이전의 프레임워크보다 더 빠른 성능을 보여준다. NestJS의 특징에 대해서는, JavaScript 개발자마다 호불호가 갈릴 수 있는 부분이지만, ES6보다도 더 진보적인 JavaScript를 사용한다. 예컨대 NestJS에서 핵심이 되는 데코레이터 패턴은 ES7이며, 현재로서는 TypeScript의 도움 없이는 사용할 수가 없고, 객체지향이라는 점 역시도 쟁점이 될 수 있겠다. 그러나 JavaScript라는 언어에 어울리는가에 대한 문제를 차치하면, NestJS가 성능이나 확장성 등, 철학으로 내세운 부분에 있어서는 확실히 기존 프레임워크보다 낫다. 내가 기존의 API를 NestJS..