[크래프톤 정글 3기] 12/29(금) TIL

ClassBinu·2023년 12월 30일
0

크래프톤 정글 3기 TIL

목록 보기
73/120

08:08 입실
nest.js 공식문서 나머지 읽기
API 문서 작성해보기

nest

npm i --save {name}

--save는 package.json에 디펜던시에 추가해서 애플리케이션 실행에 필요한 모듈임을 명시.
근데 npm 버전 5부터는 기본값이라고 함.

다중 데이터베이스

import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';

@Module({
  imports: [
    MongooseModule.forRoot('mongodb://localhost/test', {
      connectionName: 'cats',
    }),
    MongooseModule.forRoot('mongodb://localhost/users', {
      connectionName: 'users',
    }),
  ],
})
export class AppModule {}

implements

클래스가 특정 인터페이스 또는 인터페이스의 조합을 구현하도록 강제

interface IUserRepository {
  findById(id: string): Promise<User>;
  save(user: User): Promise<void>;
}

class UserRepository implements IUserRepository {
  findById(id: string): Promise<User> {
    // 구현
  }

  save(user: User): Promise<void> {
    // 구현
  }
}

쿼리 exec()

  1. 쿼리 실행 시점 명시적 표현
  2. 에러 핸들링 구체화: exec()로 mongoose에 의해 내부 개선된 에러 처리를 활성화함. 없는 경우 mongodb 수준에서의 에러 처리

dto 확장

@nestjs/swagger에서 import해야 스웨거 자동화에 반영됨.

import { IsOptional, IsString } from 'class-validator';

import { CreateUserDto } from './create-user.dto';
import { PickType } from '@nestjs/swagger';

export class UpdateUserDto extends PickType(CreateUserDto, [
  'password',
] as const) {
  @IsString()
  @IsOptional()
  nickname?: string;
}

인증 전략(strategy)

인증 전략은 크게 3가지가 있음.

JWT (JSON Web Token) 전략: JWT를 이용한 인증.
OAuth 전략: Google, Facebook 등의 OAuth 서비스를 이용한 인증.
로컬(Local) 전략: 사용자 이름과 비밀번호를 이용한 인증.

nest 교훈
의존성 주입 시 모듈에 반드시 providers에 명시해야 됨.

import는 모듈을 import하는 거고 providers는 service, strategy, guard, helper를 주입하는 것

0개의 댓글