본문 바로가기
프로젝트 개발 기록/[개발] node.js | nest, express

[#1] TypeScript + Express에서 Sequelize 시작하기

by HelloJudy 2022. 6. 14.

0. 개요

시퀄라이즈는 node.js ORM이다.

Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server를 지원한다.

3차 웹 프로젝트에서 MySQL DB를 사용하기 위해서 Sequelize를 사용해보자!

 


1. 설치

 

yarn add sequelize sequelize-cli mysql2

 

  • sequelize: RDB와 매핑되도록 해주는 ORM 패키지
  • sequelize-cli: commandline for sequelize
  • mysql2 : mysql과 연결을 위해 필요한 패키지

 

2. 초기 설정

 

✔️ sequelize init

 

  •  sequelize 명령어 확인

-h 옵션으로 명령어를 확인할 수 있다.

npx sequelize -h

 

아래 명령어를 입력하면 초기 폴더 구조가 생긴다.

 

npx sequelize init

 

 

✔️ config/config.ts

 

초기에는 json 파일로 생성됐지만 나는 ts 파일로 변경해서 작성했다.

 

import dotenv from "dotenv";
dotenv.config();

const config = {
  development: {
    username: process.env.DB_USERNAME || "root",
    password: process.env.DB_PASSWD,
    database: process.env.DB_DBNAME || "test",
    host: process.env.DB_HOST || "localhost",
    dialect: "mysql",
  },
};

export default config;

 

✔️ models/index.ts

 

config/config.ts 파일의 설정 값을 읽어와서 sequelize를 생성한다.

 

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

const sequelize = new Sequelize(config.development.database, config.development.username, config.development.password, {
  host: config.development.host,
  dialect: "mysql",
  timezone: "+09:00",
  dialectOptions: { charset: "utf8mb4", dateStrings: true, typeCast: true },
  define: {
    timestamps: true,
  },
});

export { sequelize };

 

이때 생성한 sequelize 객체를 연결해보자.

 

 

server.listen(port, async () => {
  console.log(`정상적으로 서버를 시작하였습니다.  http://localhost:${port}`);

  // authenticate 메소드로 연결 확인
  await sequelize
    .authenticate()
    .then(async () => {
      console.log("connection success");
    })
    .catch((e: Error) => {
      console.log(e);
    });
});

 

 authenticate 메소드를 붙여주면 MySQL 연결 여부를 알 수 있다.

 

 

 

✔️ Migrations

 

이 폴더의 설정을 통해 테이블을 변경할때 migrations 파일을 통해서 실제 DB에 반영할 수 있다.

 

현업에서는 실제 DB에 반영하는 것은 로직을 짜는 코드가 아닌 새로운 프로젝트에서 코드를 만들어서 PR하고 코드리뷰를 통해 데이터베이스에 적용한다고 한다.

 

migration파일로 rollback 할 수도 있다.

 

 

✔️ Seeders

 

시드 데이터 생성하는 폴더이다.

주로 샘플 데이터를 사용한다.

 

반응형

댓글