Sequelize란?
- 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구다. 여러 가지 데이터베이스와 연결할 수 있으며 자바스크립트 구문을 알아서 SQL로 바꿔주기 때문에 자바스크립트만으로 데이터베이스를 조작할 수 있다.
$ npm install sequelize sequelize-cli mysql2
$ npx sequelize init
/// config/config.js
module.exports = {
"development": {
"username": "root",
"password": "DB 비밀번호",
"database": "DB 이름",
"host": "127.0.0.1",
"dialect": "mysql",
},
"test": {
"username": "root",
"password": "MySQL 비밀번호",
"database": "DB 이름",
"host": "127.0.0.1",
"dialect": "mysql",
},
"production": {
"username": "root",
"password": "MySQL 비밀번호",
"database": "DB 이름",
"host": "127.0.0.1",
"dialect": "mysql",
}
}
// models/index.js
const Sequelize = require('sequelize');
const Example = require('./Example');
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.Example = Example;
Object.keys(db).forEach(modelName => {
db[modelName].init(sequelize);
})
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
// models/model.js
const DataTypes = require('sequelize');
const { Model } = DataTypes;
module.exports = class Example extends Model {
static init(sequelize) {
return super.init({
title: {
type: DataTypes.STRING(50),
},
description: {
type: DataTypes.STRING(200),
},
}, {
modelName: 'Example',
tableName: 'examples',
charset: 'utf8mb4',
collate: 'utf8mb4_general_ci',
sequelize,
})
};
static associate(db) {
db.Example.belongsTo(db.Example2);
db.Example.belongsTo(db.Example3);
};
};
// app.js
const db = require('./models');
db.sequelize.sync()
.then(() => {
console.log("DB Connection Success!")
})
.catch(console.error);