Learning-Developer 2019. 9. 24. 11:04
  • 책을 업로드 할 때나 코멘트를 쓸 때 creator를 함께 표시
  • User 모델에는 사용자가 업로드한 책과 코멘트의 정보를 저장

models/Book.js, models/Comment.js
models/User.js

  • 새로운 책을 업로드 할때는 newBook.creator 정보로 req.user.id를 넣어준다.
  • 그리고 그 책의 아이디를 req.user.book에 추가한다. 
  • 마지막으로 그 책의 정보 페이지로 이동 

bookController.js

  • 책의 정보 페이지를 요청 받았을 때, 우선 책의 id로부터 해당 책을 데이터베이스에서 찾는다.
  • Book.js를 보면 creator의 ref는 user이기 때문에, user의 정보를 가져오기 위해 populate 함수를 사용한다.
  • user의 정보가 book에 들어가 있는 상태로 bookDetail.pug를 불러온다.

bookController.js

  • bookDetail.pug에서는 책의 생성자 id가 지금 사용자 id와 같다면 editBook 버튼을 보여준다.
  • 그리고 Uploaded by 업로더를 표시하고, 업로더 이름을 누르면 업로더의 프로필로 이동한다. 
    • a(href=routes.userDetail(book.creator.id)) = book.creator.name로 하면 "book.creator.name"이라고 뜬다.
    • a(href=routes.userDetail(book.creator.id))=book.creator.name 로 하면 게시자 이름이 뜬다. 조심하자.

bookDetails.pug

  • 사용자의 프로필에 들어가면 게시한 책을 다 보여주게 만든다. 
  • user의 책을 찾고나서, populate로 책 목록도 함께 불러온다. 
  • userDetail.pug에 home.pug와 같은 방법으로 책들을 나열한다.

userController.js
userDetail.pug