강의

멘토링

커뮤니티

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

김건희님의 프로필 이미지
김건희

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

안녕하세요 제로초님

해결된 질문

작성

·

162

0

이미 리트윗한 게시물을 다시 리트윗 버튼을 눌렀다고 가정했을 시 밑의 코드가 실행되잖아요?

router.post('/:postId/retweet'isLoggedInasync (reqresnext=> { // POST /post/1/retweet
  try {
    const post = await Post.findOne({
      where: { id: req.params.postId },
      include: [{
        model: Post,
        as: 'Retweet',
      }],
    });
     console.log("post:::::::::::::",JSON.stringify(post),"enddddd");
    if (!post) {
      return res.status(403).send('존재하지 않는 게시글입니다.');
    }
    if (req.user.id === post.UserId || (post.Retweet && post.Retweet.UserId === req.user.id)) {
      //자기 게시글을 리트윗 하는것     자기 게시글을 남이 리트윗한것을 자기가 리트윗 하는것
      return res.status(403).send('자신의 글은 리트윗할 수 없습니다.');
    }
   
    const retweetTargetId = post.RetweetId || post.id;
    console.log("retweetTargetId:::::::::",retweetTargetId,"enddddddddddd");                
    const exPost = await Post.findOne({
      where: {
        UserId: req.user.id,
        RetweetId: retweetTargetId,
      },
    });

    // console.log("exxxxxxPost:::::",JSON.stringify(exPost),"enddddd");
   
    if (exPost) {
      return res.status(403).send('이미 리트윗했습니다.');
   }

제가 리트윗한 게시물을 다시 리트윗해도 post.RetweetId는 null로 들어오는데 

 const retweetTargetId = post.RetweetId || post.id;

여기서 post.RetweetId는 필요 없지 않나요? 이것을 지워도 잘 동작하긴 하더라구요??

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

리트윗이라고 표시된 게시물에서 리트윗 버튼을 누르면 post.RetweetId가 존재해야 합니다.

post.RetweetId는 리트윗한 게시글일 때고,  post.id는 리트윗 원본 게시글을 리트윗했을 때입니다.

김건희님의 프로필 이미지
김건희

작성한 질문수

질문하기