강의

멘토링

커뮤니티

Inflearn Community Q&A

jjongrrr0806's profile image
jjongrrr0806

asked

mongoDB from basics to practice (feat. Node.js)

Virtual Populate

관계설정에 대해서 질문있습니다

Written on

·

171

0

이번 강의에서 Blog모델에 Comment를 가상으로 추가하셨는데요~ 그렇게 하는 이유가 있을까요 ? 

예로 드실 때 comment 추가하셨다가 이렇게 해도 되는데 가상으로 추가하신다고 하고 이유를 말씀안해주셔서 궁금합니다 

관계 설정때문에 그렇게 하신걸까요 ?

 

그리고 모델 생성하실 때 1대 다 관계는 "다"인 관계쪽에만 연결해주셨는데 "1" 쪽에는 넣어주면 안될까요 ? 

예를 들어

User가 다수의 Comment를 가지고 있으니 

User(1)  Comment(다) 이 구조에서

User 모델에는 Comment를 안가지고 있고 

Comment 모델에만 User를 연결한게 궁금합니다 

User 모델에도 comment: [ id~~ , ref: 'comment']를 연결해주면 어떻게 되는걸까요 ?

 

아래처럼요! 

user: { type: Types.ObjectId, required: true, ref: 'user', },

 

그렇게 하면 User모델에 comment가 생겨서 본인이 쓴 코멘트들을 가상 설정안해도 바로 프론트에서 쓸 수 있을거같아서요~

아니면 User 모델에 에 가상으로 만들어서 연결하고 보내주는게 더 성능이 좋은걸까요 ? 

아니면 Comment 모델에서 userid로 검색해서 해당 Comment만 가져오는 api를 만드는게 나을까요 ? 

mongodbnodejsjavascriptDBMS/RDBMSrest-apiaws데이터 엔지니어링

Answer 1

1

sihoon님의 프로필 이미지
sihoon
Instructor

좋은 질문입니다. 그렇게 하셔도 되요! 뒷부분에 가면 그렇게 하고 있습니다.

 

처음에 이렇게 보여드린 이유는 관계형(대중적인) 디비에 익숙하신 분들을 위해서요. 보통은 이런느낌으로 하거든요. 점진적으로 몽고디비 스타일로 업데이트 되는 과정이 나와요. 말씀하신 comment _id 내장도 몽고디비 방식 중 하나이고요(관계형에서는 이렇게 못해요. 배열 저장이 안되니깐요). 그리고 더 나아가서는 자주 보는 최신 comments 몇개를 통째로 블로그에 내장하는 것도 나와요

jjongrrr님의 프로필 이미지
jjongrrr
Questioner

감사합니다~ 강의 끝까지 다 보면서 애매했던 부분들을 익힐 수 있어서 매우 좋았습니다 

jjongrrr0806's profile image
jjongrrr0806

asked

Ask a question