Sequlize를 이용한 Node 서버 구성하기

00_8_3·2020년 12월 30일
0
post-thumbnail

Sequelize를 이용한 Node 서버 구성하기

Sequelize란 ??

MongoDB의 ODM Mongoose가 있듯이
SequlizeMysqlORM(Object-relational Mapping)이다.
즉 nodejs에서 mysql을 쉽게 다룰 수 있도록 도와주는 라이브러리 입니다.

Why Sequelize?

최신 트렌드에 따르면 typeorm knex mysql 3가지와 비교 해보았을 때 가장 많이 사랑 받고있는 패키지!

Mysql 설치

Mysql 다운로드 링크

405 Mb 파일을 다운로드 받기를 한다.

Sequlize 설치

  • 입력 1
> npm i sequelize mysql mysql2
> npm i -g sequelize-cli
  • 입력 2
> sequelize init

config, models, migrations, seeders 폴더가 생깁니다. models안에 index.js를 수정해야 합니다.

config : sequelize를 사용하기 위해 환경을 설정하는 부분
/models/index.js : Model을 정의하고 관계를 설정하는 부분

models/index.js 작성!

  • models/index.js
const Sequelize = require("sequelize");

const comment = require("./comment");
const hashtag = require("./hashtag");
const image = require("./image");
const post = require("./post");
const user = require("./user");

const env = process.env.NODE_ENV || "development";
const config = require("../config/config.json")[env];
const db = {};

const sequelize = new Sequelize(
  config.database,
  config.username,
  config.password,
  config
);

// db.Comment = comment;
// db.Hashtag = hashtag;
// db.Image = image;
// db.Post = post;
// db.User = user;

Object.keys(db).forEach((modelName) => {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});
db.Comment = require("./comment")(sequelize, Sequelize);
db.Hashtag = require("./hashtag")(sequelize, Sequelize);
db.Image = require("./image")(sequelize, Sequelize);
db.Post = require("./post")(sequelize, Sequelize);
db.User = require("./user")(sequelize, Sequelize);

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

models폴더 안의 파일들 ERD 정리가 index.js 이다!

DB연결

  • index.js
const express = require("express");
const cors = require("cors");
const session = require("express-session");
const cookieParser = require("cookie-parser");
const dotenv = require("dotenv");
const morgan = require("morgan");
const db = require("./models");

dotenv.config();
const app = express();
db.sequelize
  .sync()
  .then(() => {
    console.log("db 연결 성공");
  })
  .catch(console.error);
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.get("/", (req, res) => {
  res.send("hello express");
});


app.listen(3065, () => {
  console.log("서버 실행 중!");
});

😢오류 발생 시

unhandled rejection sequelizeconnectionerror: unknown database

오류가 발생 시

>>>sequelize db:create

입력으로 디비를 생성 해주면 된다!

0개의 댓글