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);
    }
}

대댓글!

여기서 따로 처리해야할 것은 댓글 삭제 시를 고려를 해야한다. 우리가 평소에 댓글을 삭제할 때 대댓글이 있을 때와 없을 때가 다를 때가 있다. (글쓴이는 대댓글이 달리면 원본 댓글을 삭제하면 댓글의 내용이 삭제되었다라고 바뀌고 대댓글이 없는 경우 그냥 댓글이 삭제되는 것을 확인 할 수 있었다.)

그래서 댓글의 삭제할 때 대댓글이 달렸는데 안달렸는 확인한 후 대댓글이 달린경우 원본 댓글의 내용만 '삭제되었습니다' 로 바꿔줬습니다.

GitHub : https://github.com/gmldbd94/node_express_mongoDB