본문 바로가기
프로그래밍/database

sequelize (시퀄라이즈) 설치, 세팅하기

by 한코코 2022. 7. 16.

설치

sequelize-cli : 시퀄라이즈 명령어를 실행하기 위한 패키지

mysql2 : mysql과 시퀄라이즈를 이어주는 드라이버

$ npm init -y
$ npm install express morgan sequelize sequelize-cli mysql2

 

 

 

 

 

세팅

다음 명령어를 호출하면 config, migration, models, seeders 디렉토리가 생긴다.

$ npx sequelize init

 

 

config 디렉토리 안 config.json에서 development 속성들을 내가 사용할 데이터베이스에 맞춰서 변경해준다.

development을 수정하는 이유는 현재 코드를 작성하는 개발환경이 development이기때문.

(혹시 operatorAliases 속성이 들어 있다면 삭제해주자.)

// config/config.json
{
  "development": {
    "username": "root", // root말고 다른 username을 적어줘도 무방
    "password": "4567", // 비밀번호
    "database": "newHome", // 사용하는 db이름
    ---------------------------- 여기까지 변경할 최소한의 정보
    ---------------------------- 밑은 필요하면 변경하자
    "host": "127.0.0.1",
    "dialect": "mysql"
  },...

 

+) config.json에서 설정한 값으로 데이터베이스만!!! 생성하고 싶을때

$ npx sequelize-cli db:create

 

 

 

 

데이터베이스와 mysql을 연결하기

models 디렉토리 안 index.js 파일 내용을 간단히 다음과 같이 바꾼다.

const Sequelize = require("sequelize");

const env = process.env.NODE_ENV || "development";
const config = require("../config/config")[env]; // 데이터베이스 설정을 불러옴
const db = {};

// 데이터베이스 - mysql 연결
const sequelize = new Sequelize( // 새 시퀄라이즈 객체를 만들어서
  config.database, // 불러온 데이터베이스(mysql)과 연결한다.
  config.username,
  config.password,
  config
);

db.sequelize = sequelize; // 재사용을 위해서 db.sequelize에 저장
module.exports = db;

 

 

express와 시퀄라이즈 연결하기

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

app.set("port", process.env.PORT || 4001);
sequelize.sync({ force: false })

app.use(morgan("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static("public"));

app.listen(4001);

 

 

  1. 앞에서 정의한 db.sequelize를 불러오자.
  2. sync 메서드를 사용하면 서버 실행시 mysql과 연동이 가능하다.
  3. 옵션을 force:true로 설정지 서버 실행할때마다 테이블 재생성
  4. mysql과 연동시 config/config.json 정보 재생성됨
sequelize.sync({ force: false })

 

 

잘 실행되는지 안되는지 알고싶을때는 promise 문법을 사용해 작성하면 된다.

sequelize.sync({ force: false })
.then(() => {
	console.log("db connect!");
})
.catch((err) => {
    console.log("sequelize error!");
	console.error(err); // 에러출력코드
});

 

여기까지 무리없이 실행된다면

express-sequelize-mysql간의 연결이 훌륭하게 끝났다.

댓글