댓글에 관련된 CRUD 작업을 하는 라우터입니다. POST /comments, PATCH /comments/:id, DELETE /comments/:id를 등록했습니다.
POST /comments 라우터는 다큐먼트를 등록하는 라우터입니다. Comment.create 메서드로 댓글을 저장합니다. 그 후 populate 메서드로 프로미스의 결과로 반환된 comment 객체에 다른 컬렉션 다큐먼트를 불러옵니다. path 옵션으로 어떤 필드를 합칠지 설정하면 됩니다. 합쳐진 결과를 클라이언트로 응답합니다.
PATCH /comments/:id 라우터는 다큐먼트를 수정하는 라우터입니다. 수정에는 update 메서드를 사용합니다. update 메서드의 첫 번째 인수로는 어떤 다큐먼트를 수정할지를 나타낸 쿼리 객체를 제공하고, 두 번째 인수로는 수정할 필드와 값이 들어 있는 객체를 제공합니다. 시퀄라이즈와는 인수의 순서가 반대입니다. 몽고디비와 다르게 $set 연산자를 사용하지 않아도 기입한 필드만 바꿉니다. 따라서 실수로 다큐먼트를 통째로 수정할 일이 없어 안전합니다.
DELETE /comments/:id 라우터는 다큐먼트를 삭제하는 라우터입니다. remove 메서드를 사용해 삭제합니다. remove 메서드에도 어떤 다큐먼트를 삭제할지에 대한 조건을 첫 번째 인수에 넣습니다.