2024.02.14 TIL - 뉴스피드 프로젝트(3)

김민석·2024년 2월 14일
0

TIL

목록 보기
33/78

오늘은 뉴스피드 프로젝트 중 좋아요 기능을 만들었다!

// 게시물 좋아요 기능
router.post('/:postId', validateAccessToken, async (req, res, next) => {
  try {
    const { postId } = req.params;
    const post = await prisma.posts.findFirst({ where: { postId: +postId } });
    if (!post) {
      return res.status(404).json({ message: '해당 게시물이 없습니다.' });
    }

    // 사용자가 해당 게시물에 대해 이미 좋아요를 눌렀는지 확인
    const existingLike = await prisma.likes.findFirst({
      where: {
        postId: +postId,
        userId: req.user.userId, // 사용자 ID
      },
    });

    if (existingLike) {
      // 이미 좋아요를 눌렀으면 좋아요 취소
      await prisma.likes.delete({
        where: {
          likeId: existingLike.likeId,
        },
      });
      return res.status(200).json({ message: '게시물 좋아요를 취소합니다.' });
    } else {
      // 좋아요를 누르지 않았으면 좋아요 추가
      await prisma.likes.create({
        data: {
          postId: +postId,
          userId: req.user.userId, // 사용자 ID
        },
      });
      return res.status(201).json({ message: '게시물을 좋아합니다.' });
    }
  } catch (error) {
    next(error);
  }
});

먼저 해당 게시물이 있는지 postId를 조건으로 찾아내고 게시물이 없다면 "해당 게시물이 없습니다" 라는 메세지를 준다!

postId와 userId로 사용자가 게시물에 대해 좋아요를 눌렀는지 확인한 후
이미 눌려있는 좋아요를 다시 누르면 좋아요 취소!
눌려있지 않는 상태라면 좋아요 추가!

이상!!

profile
화이팅 화이팅

0개의 댓글