작성
·
141
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가 실행됩니다.