Node.js/NodeJS-book

Sequelize 사용하기

느리지만 꾸준하게 2022. 1. 3. 19:35

시퀄라이즈 명령어 사용하기 위해서 sequelize-cli 설치

  • 아래 구문에서 mysql2는 MySQL DB가 아닌 드라이버(Node.js & MySQL을 이어주는 역할)
npm i express morgan nunjucks sequelize sequelize-cli mysql2
npm i -D nodemon

npx sequelize init으로 시퀄라이즈 구조 생성

npx sequelize init
% npx sequelize init

Sequelize CLI [Node: 16.13.1, CLI: 6.3.0, ORM: 7.0.0-alpha.4]

Created "config/config.json"
Successfully created models folder at ~
Successfully created migrations folder at ~
Successfully created seeders folder at ~

 

models / migrations / seeders 폴더가 생성됨

 

models / index.js를 싹 다 지우고 아래와 같이 작성해주자. mysql & sequelize & node랑 연결을 해준다.

// models / 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;

module.exports = db;

 

아래 명령어로 mac에서 mysqlworkbench를 설치해준다. 참고

brew install --cask mysqlworkbench

 

app.js는 아래와 같이 작성(sequelize.sync로 연결)

아래 보면 sequelize.sync 부분이 있다. 이 부분을 하면 db연결이 되고(node에서 mysql 연결이 되고)

즉 sync를 반드시 호출을 해주어야 한다.

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'), '번 포트에서 대기 중');
});

 

그리고 index.js에서 아래와 같이 sequelize를 통해서 하나의 node에서 두 개 이상의 mysql을 연결을 할 수가 있다.

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

 

 

 

 

 

 

<출처 조현영: Node.js 교과서 - 기본부터 프로젝트 실습까지 >

https://www.inflearn.com/course/%EB%85%B8%EB%93%9C-%EA%B5%90%EA%B3%BC%EC%84%9C/dashboard

 

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지 - 인프런 | 강의

노드가 무엇인지부터, 자바스크립트 최신 문법, 노드의 API, npm, 모듈 시스템, 데이터베이스, 테스팅 등을 배우고 5가지 실전 예제로 프로젝트를 만들어 나갑니다. 최종적으로 클라우드에 서비스

www.inflearn.com

 

'Node.js > NodeJS-book' 카테고리의 다른 글

API 이해하기  (0) 2022.03.15
Sequelize 모델 만들기  (0) 2022.01.05
express - middleware 사용해보기  (0) 2021.12.31
express 서버 사용해보기(nodemon error)  (0) 2021.12.31
npm 명령어들  (0) 2021.12.30