[ MySQL | sequelize | TIL ] sequelize 사용하기

Haksoo JI·2023년 1월 18일
0

[ TIL ]

목록 보기
19/30

sequelize 사용하기

노드에서 MySQL 데이터베이스에 접속하여 MySQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리를 시퀄라이즈라고 한다.

시퀄라이즈란?

  • ORM(Object-relational Mapping)으로 분류. 노드에서 사용하니까 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구이다.
  • 매핑(mapping)이라는 것은 어떤 값을 다른 값에 대응시키는 것을 말하는데, 객체의 키와 값을 예시로 들 수 있다. 자바스크립트 내장함수 중에 array.forEach()와 비슷하지만 다른 array.map() 함수를 알고 있다면 이해가 빠를 것이다.
  • 즉, MySQL의 데이터베이스를 자바스크립트의 객체를 통해 조작할 수 있도록 둘 사이를 연결해주는 것이 시퀄라이즈다. 사람과 컴퓨터는 서로 구조와 기능이 다르지만 키보드와 마우스는 사람이 컴퓨터를 사용할 수 있도록 매핑해주는 도구인 것과 비슷하다.

시퀄라이즈 설치하기

1. npm install

$ npm install sequelize sequelize-cli mysql2

시퀄라이즈를 사용하기 위해서는 3가지 패키지가 필요하다.

  • sequelize-cli - 시퀄라이즈 명령어를 실행
  • mysql2 - MySQL(데이터베이스)과 시퀄라이즈를 이어준다.

2. npx sequelize init

npx sequelize init

npx를 붙이면 전역설치가 아닌 명령어로 사용할 수 있다. 실행하면 프로젝트 내에 config, models, migrations, seeders 디렉터리들이 생성된다.

3. models/index.js 수정

생성된 디렉터리 중 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 는 나중에 사용하기 위해서 넣어두었다.

4. MySQL 연결하기

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과 연동.

5. config/config.json 을 목적에 맞게 수정

유저네임, 비밀번호, 데이터베이스명 등을 사용에 맞게 입력한다.
이후 서버를 실행하여 연결이 되는지 확인한다.

아직 라우터를 생성하지 않아서 실제로 접속해서 테스트를 하지는 못했다. 다음 포스팅에서는 라우터 실행을 위해서 먼저 모델을 정의하는 방법을 알아보겠다.

profile
아직 씨앗입니다. 무슨 나무가 될까요?

0개의 댓글