2022이전/node.js

Nodejs, express, MongDB를 이용한 CRUD(6)_Controller_like.js

바로퇴장 2020. 1. 12. 20:28

controller/like.js

module.exports = {
    toggle_like: async(req, res) => {
        const user = req.body.user;
        const { board_id }  = req.params;
        let result = {};
        const is_liked = await Like.findOne({$and: [{user: user}, {board: board_id}]});

        // 해당 게시물에 좋아요 일때
        if(is_liked){
            await Like.findByIdAndDelete(is_liked);
            result = {data : false}
        }
        // 해당 게시물에 좋아요 아닐때
        else{
            //creat에 save명령어도 같이 실행된다.
            await Like.create({
                user: user, 
                board: board_id
            });
            // await liking.save();
            result = {data : true}
        }

        return res.json(result);
    }

}

좋아요 Toggle

좋아요를 눌렀을 때, 만약 사용자가 해당 게시물에 좋아요를 안눌렀다면 Like모델에 M:N 형태로 값을 저장하게 된다. 만약 좋아요가 눌렀던 게시물이면 Like테이블에서 해당하는 값을 찾아서 삭제를 하는 식으로 Toggle 기능을 구현을 하였다.

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