Node.js
Sequelize ORM
ORM은 RDBMS DB와 객체로 라이브러리로, 객체 지향형 프로그래밍을 통해 DB 데이터를 접근할 수 있다. 클래스 기반으로 모델을 생성해서 객체 기반의 CRUD 방식으로 쿼리문을 대체 할 수 있다.
Configuration
Module Installation
npm i morgan sequelize sequelize-cli mysql2
npm i -D nodemon
npx sequelize init
init 명령을 실행하게 되면 config, models, migrations, seeders 폴더가 생성된다.
config.json
config/config.json
{
"development": {
"username": "",
"password": "",
"database": "",
"host": "",
"dialect": "mysql"
},
"test": {
"username": "",
"password": "",
"database": "",
"host": "",
"dialect": "mysql"
},
"production": {
"username": "",
"password": "",
"database": "",
"host": "",
"dialect": "mysql"
}
}
DB 연결 정보를 config.json에 작성해준다.
models configuration
models/index.js
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
//연결하고자 하는 DB의 종류를 명시한다. process.env.NODE_ENV를 생성하지 않는 이상 config의 development DB로 접근한다.
const env = process.env.NODE_ENV || 'development';
const config = require('../config/config.json')[env];
const db = {};
const User=require('./User');
const Author=require('./Author');
const Topic=require('./Topic');
const sequelize=new Sequelize(config.database,config.username,config.password,config);
db.sequelize=sequelize;
db.Sequelize=sequelize;
module.exports = db;
Attach Sequelize to Express
sequelize를 이용해서 express와 mysql을 연결해준다.
models/app.js
const morgan=require("morgan");
const {sequelize}= require("./models");
const path=require('path');
sequelize.sync({
force:false
}).then(()=>{
console.log("DB Connected");
}).catch((err)=>{
console.error(err);
});
app.use(morgan("dev"));
app.use(express.static(path.join(__dirname, 'public'))); // 요청시 기본 경로 설정
app.use(express.json()); // json 파싱
app.use(express.urlencoded({ extended: false })); // uri 파싱
Settings for Sequelize-Session
Sequelize ORM을 이용하게 되면서 mysql 방식에서 sequelize 방식으로 바꿔줘야한다.
Module Installation
npm install -S epxress-session-sequelize
main.js
const session=require('express-session');
const session_secret=require('./config/sessionconfig.json')
const SessionStore=require('express-session-sequelize')(session.Store);
//Session 정보 할당
const sequelizeSessionStore= new SessionStore({
db:sequelize
});
app.use(session({
secret:session_secret.secret,
resave:false,
saveUninitialized:true,
store:sequelizeSessionStore
}))
References
link: node.js
link: node.js doc
link: passport
댓글남기기