• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

virtual에서

21.02.24 20:42 작성 조회수 91

3

.set("toObject", {virtuals :true});

.set("toJSON", {virtuals :true});

을 하는데 이건 왜 두개를 true로 해줘야하는건가요?

설명이 없는것 같아서 문의드려요.

답변 1

답변을 작성해보세요.

0

DEV JUNGLE님 안녕하세요 :)

virtual(가상) 필드는 저희가 설정한 virtual 함수에 따라 프로그래밍적으로 생성되는 필드들인데요. 즉, 데이터베이스에서 전달 받은 데이터 자체에는 포함되어 있지 않는 필드들이죠. 저희가 데이터를 사용할 때 virtual 필드들을 생성하도록 해줘야 하는데요. 저렇게 두 변환 과정(toObject, toJSON)에서 설정을 해줘야 가상 필드들이 보여요.

toObject: 우리가코드 상으로 그냥 객체를 다룰 때

toJSON: res.send(document) 이 때 저희가 설정한 미들웨어에 의해 JSON.stringify(document)처리가 되는데 JSON.stringify가 document를 스트링으로 변환하기 전에 toJSON을 먼저 호출해주고 이 때 virtual field들이 생성되요.