인프런 커뮤니티 질문&답변

GODOT님의 프로필 이미지
GODOT

작성한 질문수

mongoDB 기초부터 실무까지(feat. Node.js)

Virtual Populate

virtual에서

작성

·

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

GODOT님의 프로필 이미지
GODOT

작성한 질문수

질문하기