본문 바로가기

모카 스터디/Nest

백엔드의 꽃 SQL / TypeORM in the Nest

https://www.inflearn.com/course/%ED%83%84%ED%83%84%ED%95%9C-%EB%B0%B1%EC%97%94%EB%93%9C-%EB%84%A4%EC%8A%A4%ED%8A%B8/dashboard

 

탄탄한 백엔드 NestJS, 기초부터 심화까지 - 인프런 | 강의

Java에는 Spring이 있고 Python에는 Django가 있다면 Node에는 NestJS가 있습니다! 프로페셔널한 Node의 백엔드 NestJS와 Node 객체지향 프로그래밍 및 디자인 패턴을 배우세요! 이 강좌는 멤버십 구독 강좌이

www.inflearn.com

윤상석 님의 NestJS 강의를 토대로 한 기록 포스팅 입니다.

AWS RDS MySQL 구축 및 NestJS + TypeORM 프로젝트 셋업(old)

 

rds구축을 먼저 해야하지만 이미 많이 해 봤으므로 패쓰 

 

$ npm install --save @nestjs/typeorm typeorm mysql2
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost', //rds에 있는 엔드 포인트
      port: 3306,
      username: 'root',
      password: 'root',
      database: 'test',  // rds의 데이터 베이스 이름
      entities: [],
      synchronize: true,
    }),
  ],
})
export class AppModule {}

PostgreSQL셋업(with docker) & TypeORM연결

 

Joi라는 라이브러리는 환경변수가 안오면 에러를 던진다.

 

아래는 compose.yml 파일에 대한 설명

version: '3.1'

services:
  db:
    image: postgres:9.6.23
    restart: always
    env_file:
      - ./.env
    ports:
      - 5433:5432   원래는 5432로 열리지만 우리는 5433을 사용할것이다.
    volumes:  // db 백업할때 어떻게 하는지 배우기위해 !
      - ./db_data:/var/lib/postgresql/data //이경로에 해당하는 데이터가 저장이 된다.
도커 서버가 날라간 경우 로컬 db_data에 디비 정보를 백업할 수 있따. 그게 바로 volume mount라고 한다.

 

 

docker-compose up -d.  // 컨테이더 만들기  -d는 데몬 서버(백그라운드)에서 연다.

 

위와 같은 경로의 tables에  데이터가 저장이 된다.

보일러플레이트 코드 리뷰 및 테스팅 소개

이번에는 프론트에게 바로 토큰을 주는것이 아닌 httponly로 쿠키에 담아서 토큰을 보낼것이다.

그리서 strategy에서 헤더의 토큰이 아닌 쿠키에서 토큰을 뽑아 인증을 진행한다 !

현재 사용자의 Ip를 뽑아낼 수 있다.

 

TDD 소개 및 통합 테스팅

 

음 역시 솔직히 아직 tdd의 공부에 대한 필요성을 못느끼겠다..

 

차후 그 필요성을 느끼면 다시 공부해 보고자한다..

 

 

 

요구사항에 맞는 도메인설계, ERD 모델링에 대하여

 

 

many-to-many 관계를 위해서는 중간에 테이블이 하나 더 필요하다 

 

 

softdelete 예제 데코레이터

 

엔티티간에 관계에 대하여

 

 

 

 

 

 

 

 

 

https://dataonair.or.kr/db-tech-reference/d-guide/da-guide/?pageid=1&mod=list&target=&keyword=%EC%A0%95%EA%B7%9C%ED%99%94 

 

DA가이드 – DATA ON-AIR

 

dataonair.or.kr

SQL 기초 문법 정리

https://www.w3schools.com/sql/default.asp

 

PostgreSQL 타입 char vs varchar vs text

https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-char-varchar-text/

 

 

typeorm공식문서

https://typeorm.io/active-record-data-mapper#what-is-the-active-record-pattern

[TypeORM에서 Active Record와 Data Mapper 차이]

- 공식 문서

- Active Record 패턴

레포지토리 레이어를 두지 않고 엔터티 자체에서 직접 접근하여 로직을 수행합니다. 비교적 작은 서비스에 어울리는 패턴입니다.

모든 엔터티들은 TypeORM에서 제공하는 BaseEntity를 상속하고 이 BaseEntity에는 대부분의 기본 레포지토리에서 제공하는 메서드들이 담겨있습니다.  

- Data Mapper 패턴

엔터티에 직접 접근하는 방식이 아닌 레포지토리 레이어를 두고 접근합니다. 

 

 

NestJS 관리자 페이지 개발(Mogoose)