• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 db.collection().deleteOne() 질문입니다

db.collection().deleteOne() 질문입니다

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #29878

    냠냠냠
    참가자

    안녕하세요. 강의 열심히 듣고 있는 학생입니다.

    궁금한 것이 있어 질문 드립니다.

    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'로 사용할 수 없는 것인가요?? 

    혼자서는 명확하게 정리할 수 없어 질문드렸습니다. 감사합니다!

     

    #29882

    codingapple
    키 마스터

    deleteOne 안에는 삭제할 document의 일부 정보를 넣으면 됩니다 

    { _id : 1, 글제목 : abc }

    이런 document를 삭제하고 싶으면 deleteOne({_id : 1}, function(){ }) 이렇게 코드를 짜야 삭제됩니다 

    요청.body 이런건 궁금하면 출력해보면 됩니다 유저가 보낸 정보가 object자료로 들어있습니다 

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠