시퀄라이즈 명령어 사용하기 위해서 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 / 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 |