-
sequelize ORM 날짜관련 해결문제.TIL 2020. 9. 17. 12:58
시퀄라이즈 ORM에서, 카드 내용에 D_day 라는 항목이 있고,
클라이언트 측에서 d_day가 현재날짜보다, 미래인 카드들만 렌더해줘야 한다는 요청을 주셨다.
이전 프로젝트에서, 31일 전부터 전날까지의 시간 합계를 위해 계산 했던 것을 사용했어서,
[Op.between]: [new Date(new Date().setDate(new Date().getDate()-31)) , new Date(new Date().setDate(new Date().getDate()-1))]
아래와 같이 사용해 보았으나,
new Date(new Date().setDate(new Date().getDate()))
Error: Incorrect DATE value: 'Invalid date' 와 같은 에러가 발생해서, 이건 현재날짜를 제대로 못 가져오는것 같다는 판단에
스택오버플로우를 검색하여,
sequelize ORM today 라는 문구로 구글에 검색하여,
stackoverflow.com/questions/29798357/sequelize-where-statement-with-date
위의 내용을 발견. moment.js 를 찾아내었다. 현재 날짜를 가져오기 굉장히 유용해 보여서 바로 설치 후,
const moment = require("moment"); moment().format("YYYY-MM-DD"); where: { D_day: { [Op.gte]: moment().toDate(), }, }, order: [["createdAt", "DESC"]],
포스트맨요청으로 원하는 데이터가 나오는 것을 확인 할 수 있었다.
콘솔로 재확인 하여,
SELECT `id`, `text`, `tags`, `cheered`, `review`, `done`, `DLC`, `D_day`, `user_Id`, `createdAt`, `updatedAt` FROM `Cards` AS `Card` WHERE `Card`.`D_day` >= '2020-09-17' ORDER BY `Card`.`createdAt` DESC;
명령어로 원하는 query문도 확인.!
문제가되는 부분 파악,
정확한 내용 검색
사용가능한 도구 찾기
적용
굉장히 깔끔하게 해결되었다.
추가로 moment.js 에 대한 학습으로 조금 더 적극적으로 활용 할 수 있는 방법을 찾아볼 예정이다.
'TIL' 카테고리의 다른 글
typeORM migration part - 01 (0) 2020.10.08 완주하지 못한 선수 (0) 2020.09.18 socket.io (0) 2020.09.16 나누어 떨어지는 숫자 배열(프로그래머스) (0) 2020.09.15 두개 뽑아서 더하기(프로그래머스) (0) 2020.09.15