brunch

You can make anything
by writing

C.S.Lewis

by 이종복 Jun 07. 2019

Comment Model 만들기

이번 글에서는 Comment Model 만드는 법을 소개하겠습니다.

Comment Model은 '댓글'에 관한 정보를 관리하며, 

가장 중요한 특징은 Video Model과 연관을 갖는다는 점입니다. 

즉, 사용자가 Video에 댓글을 달 때, 어떤 Video가 어떤 댓글과 연관이 되어 있는지 알아야 합니다. 


설명을 통해서 좀 더 자세히 이해해보겠습니다. 


1) 먼저, import mongoose from "mongoose"; 를 통해서 mongoose를 import하고,

     CommentSchema 를 작성해줍니다. 

     CommentSchema는 2가지 구성 요소인 text, createdAt으로 구성되어 있습니다.

     text는 string type이며, required라는 object가 추가되고,

     createdAt은 Date type이며, default 값으로 Date.now()가 추가됩니다. 


2-1) Comment Model이 Video Model과 연관을 갖는 방법에는 2가지가 있습니다.

     첫번째는 Comment에 Video의 ID를 저장하기(Comment Model에서 Video Model을 불러오기),

     두번째는 Video가 ID의 Array를 가지는 것(Video Model에서 Comment Model을 불러오기)입니다. 

  

      우선, 첫번째 과정부터 살펴보겠습니다. 


2-2) 다음과 같이 Comment.js에 video 필드를 추가해줄 수 있습니다. 

        type은 mongoose.Schema.Types.ObjectId 로 설정합니다. 

        ref는 ObjectId가 불러지는 위치를 의미하며, 여기서는 "Videos"입니다. 


2-3) 이 때, Comment Model에서 참조한 "Video"와 실제 Video Model의 모델명("Video")가 

        일치하는 것이 중요합니다.

        왜냐하면 두 개가 일치해야, 실제 Comment Model에서 Video Model의 존재를 인식하고

        Video Model의 정보를 읽어 올 수 있기 때문입니다.   


2-4) 위와 같이 VIdeo 필드를 만들면 실제 DB에는 다음과 같이 저장됩니다. 

        그리고 mongoose를 통해서 "ID 1에 해당하는 Video를 가져와줘"라고 지시하게 됩니다.  


  다음은 두번째 과정을 살펴보겠습니다. 

  두번째 과정은 Video.js에서 Comments를 추가하는 것입니다. 


 2-5) Video.js의 Video Schema에 다음과 같은 comments 필드를 추가합니다. 

         주의할 점은 comments는 배열이기 때문에 [ ] 안에 type과 ref를 추가해줘야 한다는 것입니다. 

         type은 mongoose.Schema.Types.ObjectId로 

         ref는 Comment로 추가해줍니다. 


2-6) 이제 Comment.js로 돌아와서 아까 추가했던 video 필드를 삭제하고,

        mongoose.model("Comment", CommentSchema과 

        export default model을 추가해줍니다. 

        이 부분이 매우 중요합니다.

        이 과정을 통해 Video Schema의 comments 필드에서 

        Comment model의 정보를 불러올 수 있게 됩니다.


2-7) 마지막으로 init.js로 이동해서 import "./models/Comment"를 추가해줍니다.

        이 과정을 통해 app을 실행됨과 동시에 Comment model을 불러올 수 있게 됩니다. 


"다음은 노마드코더(https://academy.nomadcoders.co/)의 [초급 풀스택] 유튜브 클론 코딩 강의를 참고하였습니다."

매거진의 이전글 Video Model 만들기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari