문제

기존 Sequelize에서 날짜형(date, timestamp)을 저장시 -09:00 된 값으로 저장이 되었지만 mysql에서 값을 불러올 때에도 sequelize가 자동으로 +09:00 된 값으로 계산후 값을 반환했기 때문에 전혀 문제가 없었다.
EX) sequelize "6월 4일 00:00" 저장 시 => 실제 mysql에 저장되는 값 "6월 3일 15:00"
하지만 최근 mysql에 저장되는 타임존을 UTC(국제표준시)에서 KST(한국표준시)로 변경한 것이 화근이었다. 한국 시간으로 값을 넣었는데 mysql timezone이 KST임에도 불구하고 sequelize가 -09:00 된 값으로 시간을 저장하게 되었버렸다. 

const Sequelize = require("sequelize");

// Option 1: Passing parameters separately
const sequelize = new Sequelize(
  process.env.MYSQL_DB,
  process.env.MYSQL_USER,
  process.env.MYSQL_PASS,
  {
    host: process.env.MYSQL_URL,
    dialect: "mysql",
    timezone: "+09:00", // DB에 저장할 때 시간 설정
    dialectOptions: {
      timezone: "+09:00", // DB에서 가져올 때 시간 설정
    }
);

module.exports = sequelize;

위와 같이 sequelize 설정에서 저장할 때, 불러올 때를 따로 시간대를 설정할 수 있다.

'Node.js > sequelize' 카테고리의 다른 글

[sequelize] 모델 커스텀 메서드 선언 방법 (ES6)  (0) 2021.09.18