작성
·
133
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들이 생성되요.