[Node.js] Sequelize 기초 및 개념

·

2 min read

ORM

  • Object Relational Mapping의 약자로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것

  • SQL query가 아닌 직관적인 코드로 데이터를 조작할 수 있어 객체 지향 프로그래밍에 집중할 수 있다.

Sequelize

  • MySQL, MaraiDB, MS SQL 등 관계형 데이터베이스를 위한 promise 기반 Node.js ORM 도구

  • promise 기반으로 구현되었기 때문에 비동기 로직을 편리하게 작성할 수 있다.

Sequelize 설치

npm install sequelize sequelize-cli mysql2 // sequelize 설치
sequelize init // sequelize 초기화

sequelize init을 완료하면 해당 작업 경로에 config, migrations, models, seeders와 같은 폴더들이 생긴다.

.
├── config 
├── migrations 
├── models  
├── seeders
  • config : 데이터베이스 설정 파일, 사용자 이름, DB 이름, 비밀번호 등의 정보가 들어있음

  • migrations : 데이터베이스의 변화하는 과정들을 추적해나가는 정보로 실제 데이터베이스에 반영할 수 있음

  • models : 데이터베이스 각 테이블의 정보 및 필드 타입을 정의하고 하나의 객체로 만들어 사용

  • seeders : 테이블에 기본 데이터를 넣을 때 사용

model 생성

sequelize model:generate --name Customer --attributes id:integer,name:string, email:string, phone:string, address:string

model 옵션

  • type - DataTypes : STRING, INTEGER, FLOAT, DOUBLE, BOOLEAN ...

  • allowNull - Boolean : Null 허용 여부 (default: true)

  • defaultValue - any : 기본값 설정(default: null)

  • unique - Boolean : 유일한 값 여부 (default: false)

  • primaryKey - Boolean : primary key 여부 (default: false)

  • autoIncrement - Boolean : 자동으로 값을 1씩 증가 (default: false)

model 예시

customer.init({ 
id: { type: DataTypes.INTEGER, 
    allowNull: false, 
    primaryKey: true,
    autoIncrement: true}, 
name: { type: DataTypes.STRING, allowNull: false }, 
email: { type: DataTypes.STRING, allowNull: false }, 
phone: { type: DataTypes.STRING, allowNull: false }, 
address: { type: DataTypes.STRING, allowNull: true } 
}, { 
sequelize, 
timestamps: false, 
modelName: 'customer', 
});

참고자료

https://sequelize.org/

https://resilient-923.tistory.com/276