Express Node.js TypeScript Sequelize 세팅

cptkuk91·2022년 5월 31일
1

Algorithm

목록 보기
5/161

간단하게 ORM에 대해서 알아보고, Express, Node.js, TypeScript, Sequelize 세팅에 대해서 글을 작성해보겠습니다.

ORM이란?

Object Relational Mapping
객체와 관계형 데이터베이스의 데이터를 자동으로 연결해주는 것을 말합니다.

객체를 통해 간접적으로 데이터베이스 데이터를 다룹니다.

왜 사용할까?

  • 객체 지향적인 코드로 더 직관적이고 Logic에 더 집중할 수 있습니다.
  • 재사용 및 유지보수의 편리성 증가

Sequelize CLI 설치 및 시작

npm install --save-dev sequelize-cli

위 명령어를 통해 쉽게 설치할 수 있습니다.

npx sequelize-cli init

init을 통해 시작할 수 있고, config, models, migrations, seeders 폴더가 생성됩니다. (위 4개 폴더는 직접 생성하는 게 아니라, init을 통해 생성합니다.)

기타 설치가 필요한 Npm

npm install --save express cors dotenv typescript

위 모듈 설치를 통해 config.ts를 다루려고 합니다.

config/config.json 을 config.ts 로 확장자를 변경 후 아래 내용을 작성합니다.

development 이외 test, production은 필요한 경우 추가 작성해주시면 됩니다.

import * as dotenv from 'dotenv';
dotenv.config();

export const config = {
    development : {
        username : process.env.DB_USERNAME
        password : process.env.DB_PASSWORD,
        database : process.env.DB_DBNAME,
        host : process.env.DB_HOST,
        port : process.env.DB_PORT,
        dialect : "mysql"
    }
}

dotenv를 통해서 username, password 등을 전달해줄 겁니다.

model index.ts 설정하기

기존 생성된 index.js에 자동으로 설정된 내용이 있지만, 확장자를 ts로 변경하면서 내용도 추가로 변경해야 합니다.

ts에서 import 형식을 사용하기 위해 {} 묶어줬습니다.
경로의 경우 tsconfig.json 시작 경로 세팅에 따라 경로를 신경 써주시면 됩니다.

import {Sequelize} from "sequelize";
import {config} from "../config/config";

export const sequelize = new Sequelize(
    config.development.database,
    config.development.username,
    config.development.password,
    {
        host: config.development.host,
        dialect: 'mysql'
    }
)

model 생성하기

npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string

model 생성의 예시이며, --name 뒤 User가 Table이 됩니다. firstName, lastName, email의 경우 column 됩니다.

Migration

모든 model을 생성 후, 아래 명령어를 통해 migration 하면 끝입니다-!

npx sequelize-cli db:migrate

만약 내용 추가 또는 수정이 필요한 경우

npx sequelize-cli db:migrate:undo

입력 후 추가, 수정을 진행해주시면 됩니다.

개인꿀팁으로는..

undo 진행 시 시간적 여유를 가지고 한 번에 끝내시기를 추천해 드립니다.
model, migration을 수정하면서 급하게 진행하거나, 중간에 일을 끊었다 진행하면 꼬일 가능성이 있습니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글