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

home2 게시판 Node.js, Express 게시판 /delete 경로로 data를 서버에 넘기는데 계속 undefined로 뜹니다

/delete 경로로 data를 서버에 넘기는데 계속 undefined로 뜹니다

  • 이 주제에는 3개 답변, 2명 참여가 있으며 leesw1 년, 11 월 전에 전에 마지막으로 업데이트했습니다.
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #93058

    leesw
    참가자
    const express = require('express');
    const app = express();
    const MongoClient = require('mongodb').MongoClient;
    app.set('view engine', 'ejs');
    var db;
    MongoClient.connect('mongodb+srv://admin:1q2w3e4r@codingapplepractice.j8h804d.mongodb.net/?retryWrites=true&w=majority', { useUnifiedTopology: true }, function (에러, client) {
        app.listen(8080, function () { console.log("Welcome to 8080 port!"); });
        app.use(express.urlencoded({ extended: true })) // form data 전처리 구문
        db = client.db('todoapp') // db는 작업폴더, collection은 찐 db 느낌
        app.post('/add', (요청, 응답) => {
            db.collection('counter').findOne({name : "게시물개수"}, (에러, 결과)=>{
                const totalPost = 결과.totalPost
                db.collection('post').insertOne({_id : totalPost + 1, "제목": 요청.body.title, "기한": 요청.body.date }, () => {
                    db.collection('counter').updateOne( {name : '게시물개수'} , { $inc : { totalPost : 1 } }); // db의 총 게시글 수를 1만큼 증가
                    const formData = 요청.body
                    console.log("/add로 POST 요청이 들어와 다음과 같은 데이터가 DB에 저장됨 => " + JSON.stringify(formData));
                }); 
            })
            응답.send(
            `  
            <div style = "text-align : center; margin-top : 25%; margin-bottom : 25px;">POST request Done!\n</div>
            <div style="display: flex; justify-content: center;" >
                <button onclick="location.href='/'" style = "text-align : center;">Main page</button>
            </div>
            `);
        })
    });
     
     
    app.get('/', function (요청, 응답) {
        응답.sendFile(__dirname + '/htmls/index.html')
    });
    app.get('/write', function (요청, 응답) {
        응답.sendFile(__dirname + '/htmls/write.html')
    });
    app.get('/list', function (요청, 응답) {
        db.collection('post').find().toArray(function (에러, 결과) {
            응답.render(__dirname + '/htmls/list.ejs', { todos : 결과 })
        });
    });
    app.delete('/delete', (요청, 응답) => {
        console.log(요청.body)
    });
    프론트단 코드
    
        <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
        <script>
            $.ajax({
                method : 'DELETE',
                url : '/delete',
                data : {_id : 1}
            })
        </script>
    
    
    delete 경로로 data를 넘겨서 콘솔로 찍어보는데 무슨짓을 해도 다 undefined라 뜹니다.
    express json 어쩌구도 use해보고 cdn 링크를 다 지웟다가 다시 해봐도 여전합니다
    
    
    		
    	
    #93082

    codingapple
    키 마스터
    delete요청은 가끔 body가 안가서 post요청으로 바꿔씁시다
    #93217

    leesw
    참가자
    1. method-override 라이브러리의 도움을 받는다
    2. AJAX로 DELETE 요청을 날린다 
    3. 그냥 POST요청을 날려서 DELETE 작업을 수행한다
    
    이중 3번방식 말씀하시는 건가요?
    #93220

    leesw
    참가자
    해결했습니당
    1. jquery cdn을 공식 사이트에서 가장 최시능로 바꾸고
    2. app.use(express.json()); 
    app.use(express.urlencoded( {extended : true} ));
    구문을 위에 추가하니 겨우 프론트단에서 서버로 보낸 데이터가 콘솔에 찍히네요
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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