Javascript

Sequelize 이란? 그리고 사용법 (Express.js)

초록색거북이 2023. 2. 3. 18:00
728x90
반응형
SMALL

[비슷한 느낌]

python 의 peewee

java 의 jpa

nodejs 의 Sequelize

 

 

Sequelize는 node.js 에서 mysql등 RDMS 를 쉽게 다룰수 있게 도와주는 라이브러리 입니다.

결코말해 ORM(Object Relational Mapping) 이라고 할수 있습니다.

 

ORM이 뭔지 간단하게 말씀드리면, Object Relational Mapping의 약자입니다.

뜻 그대로 객체와 관계적인 매핑 ! 프로그래밍 언어의 객체와 데이터베이스의 데이터를 자동으로 매핑(연결) 해주는 도구 입니다.

 

결론은 프로그래밍 언어로 데이터베이스를 조작 가능합니다.

 

 

설치를 해봅시다.

 

 

 

Sequelize 설치 (DB는 mysql 기준으로 설명합니다.)

npm install --save sequelize
npm install --save mysql2

//터미널에서 sequelize를 편리하게 하는 도구
npm install -g --save-dev sequelize-cli

//전역 터미널에서 sequelize를 초기화해주는 도구입니다.
//이 명령어를 치게되면, config, models, migrations, seeders 폴더가 자동으로 생기게 됩니다.
sequelize init
  • config : 데이터베이스 연결에 필요한 정보들을 담아둔 폴더. 개발, 운영, 테스트 등 상황에 맞는 데이터베이스 정보를 사용할 수 있다.
  • migrations : 데이터베이스의 변경 기록을 담은 파일들을 보관하는 폴더. 데이터베이스에 적용하거나 이전 설정으로 되돌릴 수 있다.
  • models : 각 테이블에 대한 필드 타입 및 정보를 정의하고 테이블에 대한 객체를 모아준다.
  • seeders : 테이블에 자동으로 기본 데이터를 넣고 싶은 경우에 사용한다.

먼저

 

config 폴더 안의 config.json 에서 연결할 데이터베이스 정보를 기입 합니다.

{
  "development": {
    "username": "",
    "password": "",
    "database": "",
    "host": "",
    "dialect": ""
  }
}

 

index.js 에서 아래 코드를 작성해주세요. models 폴더안의 index.js 파일은 관계형 데이터베이스와 작성한 모델들을 매핑해주는 기능을 해서 ORM의 코어역할을 수행합니다.

import config from '../config/config.js';

 

객체 생성

const db = {};

 

sequelize 와 db 연결

config 객체로 데이터베이스 정보를 가지고 온 뒤, Sequelize() 로 DB와 연결합니다.

let sequelize = new sequelize(
  config[env].database,
  config[env].user,
  config[env].password,
  config[env]
);

Model이 작성된 파일을 찾아 db 객체에 삽입합니다.

readdirSync(__dirname)
  .filter(file => {
    return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
  })
  .forEach(file => {
    const model = require(join(__dirname, file))(sequelize, DataTypes);
    db[model.name] = model;
  });

Model 간 관계를 설정합니다.

Object.keys(db).forEach((modelName) => {
  db[modelName].associate(db);
});

db 객체에 시퀼라이즈 삽입합니다.

db.sequelize = sequelize;
db.Sequelize = Sequelize;

export default db;

db객체는 이제, sql 쿼리문없이 객체 자체로, 데이터를 조작 할수 있습니다.

 

마지막 서버 연결

import db from '../db/models';

db.sequelize
  .sync({ force: false })
  .then(() => {
    console.log('✅ DB Connected!');
  })
  .catch((err) => {
    console.error(err);
  });

 

 

이제 모델과, 시퀼라이즈의 연결이 모두 끝났습니다.

728x90
반응형
LIST