문제점 : database에 저장하는 시간대와 sequelize가 불러오는 시간이 다름
예시. db에 한국 시간으로 저장하면 -9시간되서 불러옴
추정 원인 : nodejs가 UTC 기반으로 돌고 있음
db는 정상적으로 한국시간 저장이되는거 맞음
sequelize는 nodejs위에 돌고있으므로 new Date(한국시간).toString()으로 데이트 스트링 생성하면 -9시간 처리되어 반환됨.
new Sequelize로 인스턴스 생성할 때 config option에 아래내용 추가하면 컨트롤 가능함
const config = {
...
"dialect": "mariadb",
"timezone": "asia/seoul", // created_at 등 저장할때 한국시간으로 저장
"dialectOptions": {
"charset": "utf8mb4",
"dateStrings": true, // 적용 db에서 꺼내올때 바로 스트링 처리
"typeCast": true // 적용 이건 date -> 스트링으로 타입 변경한다는 옵션인듯
},
...
}
이거는 특정 국가 1곳에서만 쓰면 좋을듯
글로벌은 ISO타입이나 / UTC 타입으로 저장하고
db에서 가져와서 .toLocaleString으로 처리하는게 제일 좋을듯
아주 유익한 내용이네요!