노드에서 MySQL 데이터베이스에 접속하여 MySQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리를 시퀄라이즈라고 한다.
ORM(Object-relational Mapping)
으로 분류. 노드에서 사용하니까 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구이다.매핑(mapping)
이라는 것은 어떤 값을 다른 값에 대응시키는 것을 말하는데, 객체의 키와 값을 예시로 들 수 있다. 자바스크립트 내장함수 중에 array.forEach()
와 비슷하지만 다른 array.map()
함수를 알고 있다면 이해가 빠를 것이다.시퀄라이즈
다. 사람과 컴퓨터는 서로 구조와 기능이 다르지만 키보드와 마우스는 사람이 컴퓨터를 사용할 수 있도록 매핑해주는 도구인 것과 비슷하다.$ npm install sequelize sequelize-cli mysql2
시퀄라이즈를 사용하기 위해서는 3가지 패키지가 필요하다.
MySQL(데이터베이스)
과 시퀄라이즈를 이어준다.npx sequelize init
npx
를 붙이면 전역설치가 아닌 명령어로 사용할 수 있다. 실행하면 프로젝트 내에 config
, models
, migrations
, seeders
디렉터리들이 생성된다.
생성된 디렉터리 중 models
에 접근하면 index.js
파일이 자동으로 생성되어있다. 그렇지만 자동생성된 코드를 그대로 사용하기에는 레어도 많이 발생하고 필요없는 부분도 많기 때문에 수정해서 사용한다.
// models/index.js
const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development;
const config = require('../congfig/config')[env];
const db = {};
const sequelize = new Sequelize(config.database, config.username, config.password, config)
db.sequelize = sequelize
module.exports = db
Sequelize
는 패키지이다 생성자이다.config/config.json
에서 데이터베이스 설정 불러오기.db.sequelize
는 나중에 사용하기 위해서 넣어두었다.const { sequelize } = require('./models')
...
sequelize.sync({ force: false})
.then(() => {
console.log('데이터베이스 연결 성공')
})
.catch((err) => {
console.log(err)
})
require('./models')
=== require('./models/index.js')
index.js
파일은 require
시 이름을 생략할 수 있다.db.sequelize
를 불러와서 sync
메서드를 사용해서 서버 실행 시 MySQL과 연동.유저네임, 비밀번호, 데이터베이스명 등을 사용에 맞게 입력한다.
이후 서버를 실행하여 연결이 되는지 확인한다.
아직 라우터를 생성하지 않아서 실제로 접속해서 테스트를 하지는 못했다. 다음 포스팅에서는 라우터 실행을 위해서 먼저 모델을 정의하는 방법을 알아보겠다.