![[Node.js] 시퀄라이즈와 DB 연결](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWT3FE%2FbtsEoLCst4O%2FTvSWYZKk5QgvtN7m3nockk%2Fimg.png)
프로젝트를 진행 도중 "시퀄라이즈"라는 것에 대해 듣게 되었습니다. 하지만 시퀄라이즈가 무엇인지 잘 몰랐고, 나름 Node.js에 대해서 잘 안다고 생각을 하였는데 저는 단지 우물안의 개구리라는것을 알게 되었습니다. 그래서 정리하게 된 시퀄라이즈와 실행법 블로그 입니다. 제가 아는 상식 선에서 정리한거라 정보가 정확하지 않을 수도 있다는 점을 감안하고 읽어주시길 바랄게요!
시퀄라이즈는 MySQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리를 말합니다.ORM(Object-relational Mapping)으로 분류되죠.
시퀄라이즈는 자바스크립트 구분을 스스로 SQL로 바꿔주기에 데이터베이스 작성법을 모르더라도 이용할 수 있습니다.
시퀄라이즈 프로젝트 구성
프로젝트를 구성하는데에 있어 필요한 패키지 세 가지를 설치하여야 합니다.
1. 시퀄라이즈 설치
npm install sequelize sequelize-cli mysql2
2. 전역설치 피하기 위한 명령어
npx sequelize init
config,models,migrations,seeders폴더가 사진과 같이 설치될 것입니다.
config : DB연결 정보를 저장하는 파일
migrations : 데이터베이스 변환하는 과정들을 추적해나가는 정보로, 실제 데이터베이스에 저장하거나 변화를 취소
models : 워크벤티에서 테이블을 정의했듯이 모델을 만듦 즉, 하나의 테이블에 하나의 파일
seeders : 서버가 시작될 때 가지고 있어야 할 데이터 디비에 추가
여기서 문제가 있습니다.
sequelize-cli가 자동으로 생성해주는 코드는 그대로 사용할 때 에러발생
그렇기에 코드를 수정해주도록 하겠습니다.
models/index.js
const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development'; // 지정된 환경변수가 없으면 'development'로 지정
// config/config.json 파일에 있는 설정값들을 불러온다.
// config객체의 env변수(development)키 의 객체값들을 불러온다.
// 즉, 데이터베이스 설정을 불러온다고 말할 수 있다.
const config = require("../config/config.json")[env]
const db = {};
// new Sequelize를 통해 MySQL 연결 객체를 생성한다.
const sequelize = new Sequelize(config.database, config.username, config.password, config)
// 연결객체를 나중에 재사용하기 위해 db.sequelize에 넣어둔다.
db.sequelize = sequelize;
// 모듈로 꺼낸다.
module.exports = db;
시퀄라이즈 MySQL연결
1. config/config.json 파일 수정
{
"development": {
"username": "root",
"password": "디비 비밀번호",
"database": "database_development",
"host": "127.0.0.1",
"dialect": "mysql"
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
"dialect": "mysql"
},
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql"
}
}
하지만 저는 저의 코드는 이렇게 수정을 하였습니다.
2. 그에 맞도록 기존의 파일 변형
const express = require('express');
const router = express.Router();
const mysql = require('mysql2');
// MySQL 연결 설정
const db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '0000',
database: 'livingalone',
});
router.post('/login', (req, res) => {
const { user_id, user_password } = req.body;
// MySQL 데이터베이스에서 사용자 정보 확인
const query = 'SELECT * FROM users WHERE user_id = ? AND user_password = ?';
db.query(query, [user_id, user_password], (err, results) => {
if (err) {
return res.status(500).json({ error: err.message });
}
if (results.length > 0) {
// 유효한 사용자인 경우
const user = results[0]; // 첫 번째 사용자 정보를 가져옴
res.json({ message: '로그인 성공', user: user });
} else {
res.status(401).json({ error: '로그인 실패' });
}
});
});
module.exports = router;
이런식으로 해준다면 끝입니다 아주 간단하죠?이렇게 시퀄라이저를 적용 한 뒤 지금의 파일 구조를 다시 보면 이렇게 된 것을 볼 수 있습니다
그리고 서버를 돌리면........
성공인걸 볼 수 있습니다!
IT에 관한 모든 것을 공부하고, 설명합니다. Study and explain everything about IT.
포스팅이 좋았다면 "구독👍🏻" 해주세요!