Post가 delete될 때, 그 post._id를 참조하는 Comment들을 삭제해야 했다.
deleteOne docs
Post.deleteOne()를 통해 삭제 가능
shema.pre('deleteOne', (next) => {
// ...
next();
});
routes/post.js
Post.deleteOne({ _id: postId }, (err) => {
// ...
});
models/Post.js
postSchema.pre(
"deleteOne",
{ document: false, query: true },
async function (next) {
// post id
const { _id } = this.getFilter();
// 관련 댓글 삭제
await Comment.deleteMany({ post: _id });
next();
}
);
this 사용 때문에 arrow function 대신 function 키워드를 이용해 callback 함수를 작성했다. 해결 방법이 있는지 더 알아봐야 할 것 같다.