본문 바로가기
카테고리 없음

[mongoDB] mongoDB에서 mongoose로 가져온 데이터 가공해서 클라이언트로 리턴하기 (Date 타입 조심하자)

by Lizzie Oh 2023. 1. 21.

까먹을까봐 급하게 쓰는 글. (정글 끝나면 좀더 보기좋게 수정할게요 ㅠㅠ )

 

몽고db는 데이터를 기본적으로 UTC로 저장하기 때문에(Zulu Time) 클라이언트에게 리턴해 줄 때 이를 한국 시간으로 변환해서 줄 필요가 생겼다. find() 로 원하는 document 들의 배열을 forEach문으로 돌면서 가공해서 리턴하려고 했는데, 아니 어떻게 해도 데이터가 안바뀐다.. 

 

어떻게 해도 날짜 데이터값은 바뀌지가 않아서 deepCopy도 시도해보고 온갖 난리를 쳐보다가 찍어본 console.log 데이터를 보고 힌트를 얻었다. 아래 startDateTime만 값이 숫자도, 문자도 아닌 뭔가 다른 데이터 형이다 ..! 

 

 

설마해서 new Date()를 사용해서 데이터 객체를 생성해서 변경했더니 드디어 변경이된다..! 그래서 Date 객체로 변경되도록 했더니 수정이 된다! 

onst classes = await Class.find({user:id, startDateTime: { $gte: today }}.sort({startDateTime}))

classes.forEach(doc=> {
        let date = doc.startDateTime
        date.setHours(date.getHours()+9)
        doc.startDateTime= date
    })

데이터를 직접 db에 업데이트 하는 경우라면 당연히 Date 객체로 넣을 생각을 했을텐데, 이미 뽑아낸 데이터에서 가공할 때도 자료형에 맞게 입력해야 할거라고 생각을 못햇다..! 다음부터는 까먹지 말자!! 

반응형

댓글