안녕하세요. 강의 열심히 듣고 있는 학생입니다.
궁금한 것이 있어 질문 드립니다.
server.js 의
app.delete('/delete', function(요청, 응답){
console.log(요청.body._id);
요청.body._id = parseInt(요청.body._id);
db.collection('post').deleteOne(요청.body, function(에러, 결과){
if(에러){return console.log(에러)};
console.log('삭제 완료');
})
});
이 부분에서 deleteOne()의 첫번째 인자에 요청.body._id 를 넣어서 에러가 났었고 현재는 수정했습니다. (MongoServerError: BSON field 'delete.deletes.q' is the wrong type 'int', expected type 'object' )
<script>
$('.delete').click(function(e){
var 글번호 = e.target.dataset.id;
$.ajax({
method : 'DELETE',
url : '/delete',
data : { _id : 글번호 }
}).done(function(결과){
//AJAX 성공시 실행할 코드는 여기
});
});
</script>
list.ejs에서 삭제를 할 때 _id에 글번호 정보를 담아서 보냈고, server.js로 넘어와 요청.body._id를 형변환 했으니, 그 변수명(요청.body._id)을 가져다 쓰는 것이라고 생각해서 "db.collection('post').deleteOne(요청.body._id, function(에러, 결과){ "이 부분에 첫번째 인자로 요청.body._id를 넣었었습니다.
검색하다보니 deleteOne()함수의 첫번째 인자에는 <필드, 유니크 인덱스>가 들어가야 한다는 말을 찾을 수 있었습니다. 이 부분이 헷갈려서 질문 드립니다.
deleteOne() 인자에 들어가는 것이 변수명이 아닌 요청 그 자체를 의미하는 것인가요?? 그러면 요청.body에서 ".body"는 list.ejs 에서 서버로 요청을 보낼 때 함께 보내는 data 자체를 가리키는 말이라고 생각해도 될까요? 그리고 list.ejs에서 보내는 데이터는 _id 라는 변수명으로 넘어가는 것이 아니라 '요청'에 그대로 들어가는 것인가요?? server.js에서는 '_id'로 사용할 수 없는 것인가요??
혼자서는 명확하게 정리할 수 없어 질문드렸습니다. 감사합니다!