Sequelize 란?
Sequelize는 node.js 라이브러리로써 mysql등 과 같은 관계형 데이터베이스를 쉽게 다룰수 있게 도와주는 라이브러리입니다.
Sequelize는 node.js 대표적인 ORM입니다.
ORM 이란?
Sequelize 설치 방법
sequelize와 mysql을 사용할거기 때문에 mysql2를 터미널에서 설치해줍니다.
npm install sequelize
npm install mysql2
config 폴더를 세팅해줍니다.
sequelize init:config --config config/config.json
config.json
model 폴더를 세팅해줍니다.
sequelize init:models
index.js
'use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
const db = {};
let sequelize;
if (config.use_env_variable) {
sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
sequelize = new Sequelize(config.database, config.username, config.password, config);
}
fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(file => {
const model = sequelize['import'](path.join(__dirname, file));
db[model.name] = model;
});
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
연결이 잘되었는지 확인해줍니다.
app.js
const models = require("./models/index.js");
models.sequelize.sync().then( () => {
console.log(" DB 연결 성공");
}).catch(err => {
console.log("연결 실패");
console.log(err);
}
Sequelize Query 사용법
INSERT
- create(values: Object, options: Object): 레코드 생성함수
- findOrCreate(options: Object): 조회 시 없으면 생성해주는 함수
- findCreateFind(options: Object): 조회 시 없으면 생성 후 조회하는 함수
- upsert(vales: Object, options: Object): 특정 레코드 INSERT하거나 UPDATE 해주는 함수
SELECT
- findOne(options: Object) : 하나만 조회하는 함수. find()와 동일
- findAll(options: Object) : 여러 개를 조회하는 함수
- findAndCountAll(findOptions: Object) : 조회 후 총 수 조회.
- findByPk(id: Number | String | Buffer, options: Object) : 프라이머리키로 조회하는 함수
- findCreateFind(options: Object) : 조회 시 없으면 생성 후 조회하는 함수
- findOrCreate(options: Object): 조회수 없으면 생성해주는 함수
UPDATE
- update(values: Object, options: Object) : 업데이트 해주는 함수.(다중 레코드 O)
- upsert(values: Object, options: Object) : 특정 레코드 INSERT하거나 UPDATE 해주는 함수
DELETE
-destroy(options: Object) : 한 개나 여러 레코드를 삭제하는 함수
Sequelize SELECT Query함수 옵션
-attributes : 조회할 칼럼을 정해주는 옵션.
-attributes안의 include : table없는 칼럼을 추가할 때 써주는 옵션.
-where : 조회할 칼럼의 조건문을 정하는 옵션.
-include : foreignKey로 Outer Left Join하는 옵션.
-order : 정렬 해주는 옵션.
-limit : 조회하는 레코드의 개수를 정하는 옵션.
-offset : 몇 번째부터 조회할지 정하는 옵션.
- 참고
항상 부족한 부분이나 피드백할 부분을 댓글로 남겨주시면 적극적으로 수용하여 수정하겠습니다.
'Study > BackEnd' 카테고리의 다른 글
동기 vs 비동기, 블로킹 vs 논블로킹 (0) | 2021.08.31 |
---|---|
NestJS란 (0) | 2021.08.30 |
객체 지향 프로그래밍(OOP, Object-Oriented Programming) 이란? (0) | 2021.08.18 |
Node.js 란? (0) | 2021.08.10 |
MVC 패턴이란? (0) | 2021.08.08 |