• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

user 라우터 관련 질문

21.04.24 09:01 작성 조회수 103

0

router.get('/:id/posts', async (req, res, next) => {

  try {

    const posts = await Post.findAll({

      where: {

        UserID: parseInt(req.params.id, 10) || (req.user && req.user.id) || 0, // 특정 사람의 게시글

        RetweetId: null,

      },

      include: [{

        model: User,

        attributes: ['id', 'nickname'],

      }, {

        model: Image,

      }, {

        model: User,

        as: 'Likers',

        attributes: ['id']

      }]

    });

    res.json(posts);

  } catch (err) {

    console.error(err);

    next(err);

  }

})

제로초님 안녕하세요. 

위의 코드에서 posts의 where절 조건 설정하는 부분이 조금 잘 이해가 되지 않는데요. 특정 사람의 게시글을 가져오거나 로그인한 사용자가 쓴 게시글을 가져오거나 혹은 아무 것도 가져오지 않는 경우로 이해하고 있는데, 0을 붙이는 것은 에러를 처리하는 경우로 이해할 수 있겠는데, 자기 글을 가져오는 것은 어떻게 되는 것인가요? path가 /user/posts인 경우 이 라우터에서 id가 없는 경우로 처리하는 것으로 보면 될까요? 

답변 1

답변을 작성해보세요.

1

/user/undefined/posts 인 경우

로그인이 되어있다면 내 정보가 가져와집니다.

parseInt('undefined', 10)은 NaN이라서

req.user?.id가 실행됩니다.