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

유영기님의 프로필 이미지

작성한 질문수

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

save로 document 수정하기

find() 가 리턴하는 instance member

해결된 질문

23.07.31 22:45 작성

·

309

1

nestjs + mongoose 조합이지만,

https://velog.io/@modolee/mongodb-document-to-javascript-object

와 같이 find()가 리턴하는 인스턴스 내부가 `_doc` 처럼 되어 있었습니다.

저는 user.age 이렇게 사용하고 싶은데, user 밑에 age 라는 변수도 없고, 꼭 .toObject()를 해야 하나요?

아직 이 부분에 수수께끼가 풀리지 않았습니다.

설명해 주실 수 있나요?

답변 3

1

유영기님의 프로필 이미지
유영기
질문자

2023. 08. 02. 22:13

믿음을 주셔서, 빨리 풀 수 있었습니다.

잘 동작합니다. 감사합니다.

1

김시훈님의 프로필 이미지
김시훈
지식공유자

2023. 08. 01. 10:56

_doc는 데이터베이스에서 넘어온 "raw" 데이터입니다. toObject()를 하지 않아도 UserSchema에 age가 정의되어 있다면 user.age가 자동으로 접근이 되어야 합니다. UserSchema를 확인해보시면 좋을 것 같아요

0

유영기님의 프로필 이미지
유영기
질문자

2023. 08. 01. 11:57

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

아직 모든 수업을 듣지 않은 상태인데요,

수업 코드에서 이 부분과 연관이 있지 않나 하는 생각이 들었습니다.

김시훈님의 프로필 이미지
김시훈
지식공유자

2023. 08. 01. 21:16

user.age로 했을 때는 나오는 값이 없나요? 저 설정은 json으로 변환했을 때 virtual 값들도 포함되도록하기 위함입니다. user.age는 저 설정과 상관 없이 접근이 되어야 합니다. UserSchema에 age가 정의되어 있고 실제로 해당 필드의 값이 디비상으로(_doc) 존재할 경우에는요