2022이전/node.js
Nodejs, express, MongDB를 이용한 CRUD(5)_Controller_comment.js
바로퇴장
2020. 1. 12. 20:23
Comment.js
module.exports = {
//게시물에 댓글 작성하기
create: async (req, res) => {
const { user } = req.body;
let comment = new Comment({
content : req.body.content,
board : req.params.board_id,
user : user,
});
result = await comment.save();
return res.json(result);
},
//게시판에 해당하는 댓글 모두 불러오기
read: async (req, res) =>{
const result = await Comment.find({board: req.params.board_id})
.populate('user', 'name')
.populate('re_comment');
return res.json(result);
},
//특정 댓글 수정하기(해당 유저인지 확인 추가 할것)
update: async (req, res) =>{
let comment = await commnet.findById(req.params.commnet_id);
comment.content = req.params.content;
const result = comment.save();
return res.json(result);
},
//특정 댓글 삭제하기
delete: async (req, res) =>{
const comment = await Comment.findById(req.params.comment_id);
console.log(comment);
//특정 댓글에 대댓글이 없을 때
if(comment.re_comments.length === 0){
console.log("단일 삭제");
await Comment.findByIdAndDelete(comment);
}
//특정 댓글에 대댓글이 있을 때
else{
console.log("대댓글 있져욤");
comment.content = "삭제가 되었습니다."
await comment.save();
}
return res.json({message: true});
},
//특정 댓글에 대댓글 달기
re_comment: async (req, res) => {
const comment = new Comment({
content : req.body.content,
user : req.body.user,
parent_comment : req.params.comment_id
});
const result = await comment.save();
return res.json(result);
}
}
대댓글!
여기서 따로 처리해야할 것은 댓글 삭제 시를 고려를 해야한다. 우리가 평소에 댓글을 삭제할 때 대댓글이 있을 때와 없을 때가 다를 때가 있다. (글쓴이는 대댓글이 달리면 원본 댓글을 삭제하면 댓글의 내용이 삭제되었다라고 바뀌고 대댓글이 없는 경우 그냥 댓글이 삭제되는 것을 확인 할 수 있었다.)
그래서 댓글의 삭제할 때 대댓글이 달렸는데 안달렸는 확인한 후 대댓글이 달린경우 원본 댓글의 내용만 '삭제되었습니다' 로 바꿔줬습니다.