인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기

좋아요 싫어요 기능 (3) 클릭시 기능들

Like 취소 부분에 질문이 있습니다.

작성

·

250

0

강사님은 

Like.findByIdAndDelete를 사용하셔서 해당 Like 도큐먼트를 지워주셨습니다.

그런데 이 경우 다수의 사람이 좋아요를 눌렀을 경우

한 사람만이라도 좋아요를 다시 눌러 취소할 경우 조건에 해당하는 도큐먼트 전체가 삭제되는 것이 아닌가요?

아래는 강사님이 작성하신 스키마와 백엔드 로직입니다.

const likeSchema = mongoose.Schema({
   userId: {
       type: Schema.Types.ObjectId,
       ref: 'User'
   },
   commentId: {
       type: Schema.Types.ObjectId,
       ref: 'Comment'
   },
   videoId: {
       type: Schema.Types.ObjectId,
       ref: 'Video'
   }

}, { timestamps: true })

router.post("/unLike", (req, res) => {

    let variable = {}
    if (req.body.videoId) {
        variable = { videoId: req.body.videoId, userId: req.body.userId }
    } else {
        variable = { commentId: req.body.commentId , userId: req.body.userId }
    }

    Like.findOneAndDelete(variable)
        .exec((err, result) => {
            if (err) return res.status(400).json({ success: false, err })
            res.status(200).json({ success: true })
        })

})

제 생각에는 해당 Like의 _id를 찾아내거나, userId와 commentId가 동시에 일치하도록 조건을 걸어주어야 하는 게 아닌가 싶습니다.

혹시 제가 잘못 알고 있는 부분이라면 지적 부탁드립니다.

답변 1

0

끝까지 보시면 후반부에 findOneAndDelete 바꾸셨습니다

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기