-
[SW 정글 114일차] 나만의 무기 22일차 (에러..)기타/SW 사관학교 정글 2021. 11. 25. 05:58
오늘은 어제 계획했던 api 수정 작업부터 시작했다.
해야할 것은 하루에 해야할 챌린지를 하지 못해서 키우고 있던 생명체를 사망처리하는 것이다.
일단은 00시 00분에 스케쥴러가 돌면서 챌린지를 하지 않은 생명체를 체크했고 생명체 테이블에서 update가 되면 다른 테이블에서 삭제가 일어나거나 participant -1 이 되어야 했다.
이번 주 월요일 멘토링에서 멘토님이 해주신 말씀 중에 트리거에 의존하는 것은 좋지 않은 방법이라고 하셨다.
그래서 쿼리문으로 해결하려고 했는데 많은 시간동안 고민해도 해답이 나오지 않았고 일단은 사용자 경험 수집을 위한 빠른 개발을 위해 트리거의 힘을 빌렸다.
이외에도 필요한 api를 새로 만들거나 수정하는 작업을 걸쳤다.
그 중에서 가장 기억에 남은 api는 생명체 생성 api이다.
생명체 생성은 main flow에서 빠지면 안되는 기능이지만 폼 만들기에 어려운 부분들이 있어서 오늘 완성이 되었고 api를 연결하여 테스트를 해보았다.
시작부터 error를 마주했다.
error를 보고 처음에는 이게 말이 되는 에러인가?했다.
pijpjp는 VALUES로 들어가는 값이고 field name이 아닌데 왜 저런 error를 뱉을까 고민을 했다.
혼자서 고민을 한 후에 구글링을 해보았다.
https://chobopark.tistory.com/92
해당 에러가 나는 경우는 2가지인데 첫 번째는 진짜 컬럼명이 없어서이고 두 번째는 사용자가 문자열로 준 데이터가 따움표로 표시되어 있지 않는 경우이다.
그래서 내가 에러를 마주친 이유는 2번째였고 sql문을 잘 보면 pijpjp가 따옴표로 묶여있지 않았다.
왜 묶여있지 않았을까....
분명이 챌린지 생성 폼에서는 input box에서 받은 값을 json으로 받고 parsing을 해서 sql문에 INSERT했을 때에는 위 에러를 마주친 적이 없는데.;..
그리고 request body를 console로 찍어봐도 분명히 따옴표로 묶인 채 들어왔다.
일단은 임시방편으로 아래와 같이 따옴표를 붙여주고 INSERT를 해주었다.
const alien_name = '"' + req.body.alien_name + '"'
그리고 두 번째 문제는 DB 테이블에 입력된 날짜와 localhost에서 서버를 돌려서 클라이언트가 GET으로 해당 날짜를 받을 때 시차적용이 되어서 보내진다는 것이다.
예를 들어 11월 25일 06시라고 DB 테이블에 저장이 되어있으면 클라이언트는 11월 24일 21시라고 받는다는 것이다.
모든 날짜가 9시간 전으로 받아진다는 것이고 그렇다는 것은 UTC로 받는다는 것이다...
일단 DB 테이블에 저장되는 날짜, 시간은 RDS를 한국시간으로 맞추었기에 한국시간과 일치한다.
그러면 왜 localhost, postman으로 받으면 UTC로 받는 것일까...
그런데 또 신기한 것은 실제 AWS에 배포한 사이트는 한국시간으로 잘 받는다...
이거를 해결하고 잠을 자고 싶은데 잘 잡히지 않는다..
컬럼 타입을 DATETIME에서 TIMESTAMP로 바꿔도 해결되지 않는다..
조금 더 방법을 찾아봐야겠다.
<해야할 것>
api가 견고한지 확인
DB 테이블은 문제없는지 확인
트리거 제거 후 쿼리문 작성방법 모색
날짜, 시간 시차 문제 해결하기
'기타 > SW 사관학교 정글' 카테고리의 다른 글
[SW 정글 116일차] 나만의 무기 24일차 (끝까지 달려야 한다) (0) 2021.11.27 [SW 정글 115일차] 나만의 무기 23일차 (나는 좋은 팀원일까?) (0) 2021.11.26 [SW 정글 113일차] 나만의 무기 21일차 (기획 고민=∞) (0) 2021.11.24 [SW 정글 112일차] 나만의 무기 20일차 (프론트엔드 맛보다) (0) 2021.11.23 [SW 정글 111일차] 나만의 무기 19일차 (쌓아 놓은 궁금증 해결) (0) 2021.11.22