Node/시퀄라이즈(MySQL), 몽구스(MongoDB)

시퀄라이즈

webmaster 2022. 9. 18. 20:56
728x90

시퀄라이즈 : SQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리

 

GitHub - ZeroCho/nodejs-book

Contribute to ZeroCho/nodejs-book development by creating an account on GitHub.

github.com

프로젝트 세팅 , 콘솔을 통해 경로로 이동한 package.json 작성

package.json

{
  "name": "learn-sequelize",
  "version": "0.0.1",
  "description": "시퀄라이즈를 배우자",
  "main": "app.js",
  "scripts": {
    "start": "nodemon app"
  },
  "author": "ZeroCho",
  "license": "MIT",
  "dependencies": {
    "express": "^4.18.1",
    "morgan": "^1.10.0",
    "mysql2": "^2.3.3",
    "nunjucks": "^3.2.3",
    "sequelize": "^6.23.0",
    "sequelize-cli": "^6.4.1"
  },
  "devDependencies": {
    "nodemon": "^2.0.20"
  }
}
npm i express morgan nunjucks sequelize sequelize-cli mysql2
npm i -D nodemon
npx sequelize init
  • 시퀄라이즈 명령어 사용하기 위해 sequelize-cli 설치
  • mysql2는 MySQL DB가 아닌 드라이버(Node.js와 MySQL을 이어주는 역할)
  • npx sequelize init으로 시퀄라이즈 구조 생성

module/index.js

const Sequelize = require("sequelize");

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

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

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

module.exports = db;
  • require(../config/config)으로 설정을 로딩한다
  • new Sequelize(옵션들…)로 DB와 연결 가능하다.

MySQL 연결하기(app.js)

const express = require("express");
const path = require("path");
const morgan = require("morgan");
const nunjucks = require("nunjucks");

const { sequelize } = require("./models");

const app = express();
app.set("port", process.env.PORT || 3001);
app.set("view engine", "html");
nunjucks.configure("views", {
  express: app,
  watch: true
});
sequelize
  .sync({ force: false })
  .then(() => {
    console.log("데이터베이스 연결 성공");
  })
  .catch(err => {
    console.error(err);
  });

app.use(morgan("dev"));
app.use(express.static(path.join(__dirname, "public")));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

app.use((req, res, next) => {
  const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`);
  error.status = 404;
  next(error);
});

app.use((err, req, res, next) => {
  res.locals.message = err.message;
  res.locals.error = process.env.NODE_ENV !== "production" ? err : {};
  res.status(err.status || 500);
  res.render("error");
});

app.listen(app.get("port"), () => {
  console.log(app.get("port"), "번 포트에서 대기 중");
});
  • sequelize.sync로 연결한다.
  • 나머지는 이전 설정과 동일하다

DB Config 설정하기(config/config.json)

{
  "development": {
    "username": "root",
    "password": "~~~",
    "database": "nodejs",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "test": {
    "username": "root",
    "password": "~~~",
    "database": "database_test",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "production": {
    "username": "root",
    "password": "~~~",
    "database": "database_production",
    "host": "127.0.0.1",
    "dialect": "mysql"
  }
}
728x90

'Node > 시퀄라이즈(MySQL), 몽구스(MongoDB)' 카테고리의 다른 글

몽구스 ODM  (0) 2022.09.24
관계 쿼리  (0) 2022.09.18
쿼리 알아보기  (0) 2022.09.18
관계 정의하기  (0) 2022.09.18
모델 만들기  (0) 2022.09.18