[Node.js] mysql, Sequelize 모델 정의, 메소드 사용 방법

NodeJS 2023. 6. 1.

※참고 이 글에서는 '인스턴스'='데이터', 즉 테이블에 있는 데이터 한 행을 뜻함.

          이 글에서는 '클래스'=테이블

 

 

 

기본적인 모델 정의 방법

const { DataTypes } = require('sequelize');
const { db, sequelize } = require('../db/database.js');
// db디렉토리에 있는 database 파일에 다음과 같이 작성함.
//     const sequelize = new Sequelize(database, user, password, { host, dialect });  


const 모델이름 = sequelize.define(테이블 이름, {
	컬럼_이름: {
    	type: DataType.INTEGER,
        autoIncrement: true,
        allowNull: false,
        primaryKey: true
    },
    컬럼_이름2: {
    	type: DataType.STRING(45)
    },
    ...
    ...
}, 옵션)

 

sequelize는 테이블 이름을 자동으로 복수형으로 만든다.

 

 

 

모델 메소드(Model method)

⚠️참고: sequelize 메소드는 프로미스(promise)를 반환한다.

 

  create: 테이블에 데이터 추가

// 이름이 'John', 나이가 25인 인스턴스를 생성
모델명.create({ name: 'John', age: 25 });

 

 

  findAll: 조건에 맞는 모든 데이터를 배열로 반환한다.

모델명.findAll({ WHERE: { 조건: 값 } });

 

 

  findOne: 조건에 맞는 첫 번째 데이터를 반환한다.

모델명.findOne({ where: { 조건: '값' } });

 

 

  findByPk: 주어진 PK(primaryKey)와 일치하는 데이터를 찾아서 반환한다.

// 해당 기본키(PK)를 가진 인스턴스를 찾아서 반환한다.
모델명.findByPk(기본키);

 

 

  update: 주어진 조건에 맞는 데이터를 업데이트한다.

// 조건에 맞는 인스턴스(행)를 찾아서 해당 컬럼의 값을 바꾼다
모델명.update({ 컬럼_이름: '변경할 값' }, { where: { 조건 } });

 

 

  destroy: 주어진 조건에 맞는 데이터를 삭제한다.

// 조건에 맞는 인스턴스를 찾아서 삭제한다.
모델명.destroy({ where: { 조건: '값' } });

 

 

  bulkCreate: 여러개의 데이터를 한 번에 추가한다.

모델명.bulkCreate([{ 컬럼_이름: '값', 컬럼_이름: 값 }, { 컬럼_이름: '값', 컬럼_이름: 값 }]);

 

 

  count: 조건에 맞는 데이터의 수를 반환한다.

// 조건이 20을 초과하는 인스턴스를 반환한다.
모델명.count({ where: { 조건: { [Op.gt]: 20 } } });

Sequelize는 여러 연산자를 제공한다. Op.?? 이런 형태이니 직접 찾아보길 바란다.