학이시습
[Node] Sequelize 사용하여 MySQL과 연결 본문
오늘은 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 |
---|