Study/BackEnd

Sequelize 란? 설치 및 사용법

ujam 2021. 8. 14. 18:11
728x90
반응형

Sequelize 란?

  Sequelize는 node.js 라이브러리로써 mysql등 과 같은 관계형 데이터베이스를 쉽게 다룰수 있게 도와주는 라이브러리입니다.

Sequelize는 node.js 대표적인 ORM입니다.

 

 

 

ORM 이란?

 

ORM (Object Relational Mapping) 이란?

ORM이란? ORM이란 Object Relational Mapping의 약자로 관계형 데이터베이스 관리 시스템(RDBMS)(Relational Database Management System)과 객체 지향 프로그래밍 언어(OOP)(Object Oriented Programming) 사이에..

ujam.tistory.com

 

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 : 몇 번째부터 조회할지 정하는 옵션.

 

 

 

 

  • 참고
 

ukcasso code

ukcasso code 욱카소 코드

ukcasso.tistory.com

 

 

 

항상 부족한 부분이나 피드백할 부분을 댓글로 남겨주시면 적극적으로 수용하여 수정하겠습니다.

728x90
반응형

'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