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

home2 게시판 Node.js, Express 게시판 edit (수정)기능 추가하기해서 put 요청시 에러 질문

edit (수정)기능 추가하기해서 put 요청시 에러 질문

10 글 보임 - 1 에서 10 까지 (총 20 중에서)
  • 글쓴이
  • #29567

    윤준호
    참가자

    일단 edit.ejs 코드입니다. 

    <%- include('nav.html') %>

      <div class="container mt-3">
        <form action="/edit?_method=PUT" method="POST">   
          <div class="form-group">
            <label>할일</label>
            <input type="text" value = "<%= post._id %>" name="id" style="display : none;">
            <input value = "<%= post.제목 %>" type="text" class="form-control" name="title">     
          </div>
          <div class="form-group">
            <label>날짜</label>
            <input value = "<%= post.날짜 %>" type="text" class="form-control" name="date">     
          </div>
          <button type="submit" class="btn btn-outline-secondary">수정하기</button>
        </form>
      </div>

     

    server.js 코드입니다. 

    const methodOverride = require('method-override')
    app.use(methodOverride('_method'))

    app.get('/edit/:id', function(요청, 응답){
        db.collection('post').findOne({ _id : parseInt(요청.params.id)}, function(에러, 결과){  
            응답.render('edit.ejs', { post : 결과 })  
        })
    })

    app.put('/edit', function(요청, 응답){  
        db.collection('post').updateOne( {_id : parseInt(요청.body.id) }, {$set : { 제목 : 요청.body.title , 날짜 : 요청.body.date }}, function(){
            console.log('수정완료')
            응답.redirect('/list')

        });

    })

     

    이렇게 하고 localhost8000/edit/24에서 수정하기(혹은 submit) 버튼을 누르면 

    Cannot PUT /edit 이라는 에러가 나오네요... 

    콘솔로 에러를 확인해보니 POST http://localhost:8080/edit?_method=PUT 404 (Not Found)

    라는 에러가 나오는데  edit.ejs의 <form action="/edit?_method=PUT" method="POST">이 부분 문제인가요?

    강의 보고 똑같이 쳤는데 뭐가 문젠지 모르겠습니다. 

    #29578

    윤준호
    참가자

    참고로 

    app.get('/edit/:id', function(요청, 응답){
        db.collection('post').findOne({ _id : parseInt(요청.params.id)}, function(에러, 결과){  
            응답.render('edit.ejs', { post : 결과 })  
        })
    })

    여기서 console.log(결과);를 찍어보면 

    { _id: 24, '제목': '알바가기', '날짜': '3.9' } 이렇게 나오는 걸 보면 여기까지는 문제가 없는 듯 싶습니다. 

     

    #29583

    codingapple
    키 마스터

    const methodOverride = require('method-override')
    app.use(methodOverride('_method')) 

    이거가 app.put 보다 위에있나요 아니면 ejs 파일이 더있거나 저장안되어있거나 그럴수도요 

    #29595

    윤준호
    참가자

    늦은시간 감사합니다.

    위에 적어뒀습니다. 아마 두번째 문제같은데

    Ejs파일들을 제가 강의보다 더 많이 만들어봤습니다. (그냥 아무의미 없는 페이지지만 복습겸.,)

    이게 문제일까요?

    그렇다면 어찌 해결해야할까욤...?

    #29609

    codingapple
    키 마스터

    edit.ejs 파일이 더 있나 살펴봅시다 

    #29633

    윤준호
    참가자

    찾아보니 더 edit.ejs파일은 하나밖에 없네용...

    강의를 2번 더 돌려봤는데도 똑같은 문제가 일어나는데.... 답답하네용 어찌해야 할까요 ㅠ?

    #29639

    codingapple
    키 마스터

    코드에 별 이상은 없어보입니다 일단 put요청말고 post요청으로 바꿔서 하면 됩니다

    #29643

    윤준호
    참가자

    <form action="/edit?_method=PUT" method="POST"> 이 부분을 

    <form action="/edit?_method=PUT" method="POST">로 바꿔서 해보란 말씀이신가요?

     

    이렇게 해도 POST http://localhost:8080/edit?_method=POST 404 (Not Found)  라는 에러가 뜨네요 ㅜㅜ

    후 하나의 문제로 이렇게 너무 많이 질문드려 죄송합니다 ㅜㅜ..

    #29644

    윤준호
    참가자

    오타네요..

    <form action="/edit?_method=PUT" method="POST"> 이 부분을 

    <form action="/edit?_method=POST" method="POST">로 했는데도 똑같은 오류가 나네요...

    #29656

    codingapple
    키 마스터

    method override 라이브러리와 put 쓰지말고 맨날하던 post요청으로 하면 됩니다 

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

About

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

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

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