로그인한 사용자가 작성한 글에만 삭제 버튼이 보이고 삭제를 누르면 글 삭제가 가능하다.
프론트 수정
//main.html
...
{% if twit.User.id == user.id %}
<button class="twit-delete btn">삭제</button>
{% endif %}
...
{% block script %}
<script>
...
document.querySelectorAll('.twit-delete').forEach(function(tag) {
tag.addEventListener('click', function() {
const myId = document.querySelector('#my-id');
if (myId) {
const twitId = tag.parentNode.querySelector('.twit-id').value;
const twitUserId=tag.parentNode.querySelector('.twit-user-id').value;
if (myId.value ==twitUserId ) {
if (confirm('삭제 하시겠습니까?')) {
axios.post(`/post/${twitId}/delete`)
.then(() => {
location.reload();
})
.catch((err) => {
console.error(err);
});
}
}
}
});
});
</script>
{% endblock %}
라우터 추가
//routes/post.js
router.post('/:id/delete',async(req,res,next)=>{
try{
const post=await Post.findOne({where:{id:req.params.id, userId:req.user.id}});
await post.destroy();
res.redirect('/');
} catch(error){
console.error(error);
next(error);
}
});
삭제 요청을 받은 게시글의 생성자가 현재 로그인하여 접속한 유저인지 확인 후 삭제한다.
8번부터 10번 까지의 글을 삭제 해 보았다. db에서 삭제가 이상 없이 작동된다.