학이시습

[Node] Sequelize 사용하여 MySQL과 연결 본문

Framework/Node

[Node] Sequelize 사용하여 MySQL과 연결

dbswndud 2025. 3. 14. 23:35


오늘은 Sequelize를 이용하여 MySQL과 연결 할겁니다!

 

시퀄라이즈란?

데이터베이스 작업을 쉽게 도와주는 고마운 친구(라이브러리)입니다.

Nest.js에는 typeORM을 사용하져..

 

레츠고..

터미널에서 시퀄라이즈에 필요한 모듈 다운로드 받습니다

npm i express morgan sequelize sequelize-cli mysql2

 

 

시퀄라이즈 cli 초기 설정 (시퀄라이즈를 사용하기 편하게~)

npx sequelize init

 

config, models, migrations, seeders 폴더와 modelsd안에 index.js 파일이 만들어집니다.

이 폴더들은 나중에 뭐하는 폴더인지 알아보겠습니다...


index.js 파일을 아래처럼 수정합니다

models/index.js

const Sequelize = require('sequelize');
const env = 'development';
const config = require('../config/config.js')[env];   // 환경변수 설정을 하면 그걸로..
const db = {};

// mysql 연결 객체 생성
const sequelize = new Sequelize(config.database, config.username, config.password, config);

db.sequelize = sequelize;

module.exports = db;

 


그리고 디비와 연결을 해보겠습니다.

app.js

const express = require("express");
const path = require("path");
const morgan = require("morgan");

require('dotenv').config();

const { sequelize } = require("./models");
const app = express();

app.set("port", process.env.PORT);

sequelize.sync({ force: true })  // force: true -> 서버 실행 시마다 테이블 재생성
    .then(() => {
        console.log("Database connection success");
    })
    .catch((err) => {
        console.error("Failed to connect database" + err);
    });

app.use(morgan("dev"));  // 
app.use('/', express.static(path.join(__dirname, "public")));  // '/'로 요청을 보내면 public 속 파일을 찾아 반환
app.use(express.json());  // json 형태의 요청 바디를 파싱하기 위함
app.use(express.urlencoded({ extended: false })); // 바디에 있는 인코딩된 payload를 파싱

app.listen(app.get('port'), () => {
    console.log(`http://localhost:${app.get('port')}`);
});

그 다음..

config.json은 데이터베이스를 사용할 때 필요한 정보들이 있는 파일입니다.

json이면 환경변수 설정을 하기 애매(주관)하기 때문에 config.js파일로 바꿔줄겁니다.

config/config.js

// 데이터베이스를 사용하는데 필요한 정보를 저장해두는 파일
require('dotenv').config();

const development = {
  username: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
  host: process.env.DB_HOST,
  dialect: "mysql",
  port: process.env.DB_PORT
};

const production = {
  username: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
  host: process.env.DB_HOST,
  dialect: "mysql",
  port: process.env.DB_PORT
};

const test = {
  username: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
  host: process.env.DB_HOST,
  dialect: "mysql",
  port: process.env.DB_PORT
};

module.exports = { development, production, test };

그리고 실행하면 ~

 

디비 연결 성공!

'Framework > Node' 카테고리의 다른 글

[Node] Express.js 기초 세팅  (0) 2025.03.12