인프런 커뮤니티 질문&답변
안녕하세요 제로초님
해결된 질문
작성
·
162
0
이미 리트윗한 게시물을 다시 리트윗 버튼을 눌렀다고 가정했을 시 밑의 코드가 실행되잖아요?
router.post('/:postId/retweet', isLoggedIn, async (req, res, next) => { // 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는 리트윗 원본 게시글을 리트윗했을 때입니다.




