script코드입니다. list.ejs에 담겨있습니다.
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script>
<script>
$('.delete').click(function(e) {
var dataId = e.target.dataset.id;
$.ajax({
method: 'DELETE',
url: '/delete',
data: {
_id: dataId
}
}).done((result) => {
console.log('성공했습니다!');
$(this).parent('li').fadeOut();
}).fail((xhr, textStatus, errorThrown) => {
console.log(xhr, textStatus, errorThrown);
});
});
</script>
server.js의 해당 서버 코드입니다.
app.delete('/delete', function(req, res) {
req.body._id = parseInt(req.body._id);
db.collection('counter').deleteOne(req.body, function(err, result) {
console.log('삭제완료');
console.log(req.body._id);
res.status(200);
});
res.send('삭제완료');
});
서버에서도 console.log(req.body._id); 는 NaN으로 나오고 script에서도 콘솔에 e.target.dataset.id가 undefined로 나옵니다. stackoverflow랑 여기 게시판도 봤지만 해결방법을 모르겠습니다.
그래서 그런지 서버에서도 삭제 요청은 받지만 실제로 삭제는 해주지 않고 계속 데이터가 살아있습니다.
하지만 숫자를 직접 넣으면 또 되서 이게 뭐가 안되고 있는건지 잘 모르겠습니다.