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

home2 게시판 Node.js, Express 게시판 수정이 안되는데 대체 어디가 문제인지 모르겟어요 ㅠ

수정이 안되는데 대체 어디가 문제인지 모르겟어요 ㅠ

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

    방수연
    참가자
    //수정기능 만들기( server.js)
    app.get('/edit/:id', async (req, res) => {
        let result = await db.collection('post').findOne({ _id: new ObjectId(req.params.id) })
        res.render('edit.ejs', { result: result })
    })
    app.put('/edit', async (req, res) => {
        <span style="color: #ff0000;">console.log(req.body.id, req.body.title, req.body.content) => 이부분이 undefined undefined undefined 라고 뜹니다. </span>
        try {
            let result = await db.collection('post').updateOne(
                { _id: new ObjectId(req.body.id) },
                { $set: { title: req.body.title, content: req.body.content } }
            );
            console.log(result);
            res.redirect('/list');
        } catch (error) {
            console.error(error);
            res.status(500).send('서버 에러 발생');
        }
    })
    

    <hr />

    이건 edit.ejs 파일입니다. 
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>ejs파일(write)</title>
        <link rel="stylesheet" href="/main.css">
        <link rel="stylesheet" href="/list.css">
    </head>
    <body class="grey-bg">
        <%- include('nav.ejs',{age:20})%>
            <!-- 3.전송누르면 서버로 전송, 서버는 확인 후 DB 수정 -->
            <!-- REST API=> 수정기능은 PUT method ,삭제기능은 DELETE method -->
            <!-- URL 가장 뒤에 ?_method=PUT 이런 식의 코드를 작성하면 현재 폼전송시 POST요청이 아니라 PUT 요청으로 덮어쓰기 -->
            <form class="form-box" action="/edit?_method=PUT" method="POST" enctype="multipart/form-data">
                <h4>글수정</h4>
                <!-- 유저야 무슨 docu 수정할지 보내라 -->
                <!-- // 서버에 없는 정보는 유저에게 보내라고 하거나
                // DB에서 뽑아보거나 둘 중 하나 하면 보통 해결됩니다.  
                // "어떤 document를 수정하고 싶은지"는 서버는 모르고 유저만 알고있기 때문에 유저에게 보내라고 하면 됩니다. 
                // 유저에게 수정할 글의 _id를 보내라고 합시다. -->
                <input name="id" value="<%= result._id %>" style="display: none;">
                <!-- 2. 수정페이지엔 글의 제목과 내용이 이미 채워져있어야함 -->
                <input name="title" value="<%= result.title %>">
                <input type="file" name="img1" accept="image/*" value="<%= result.img %>" multiple>
                <input name="content" value="<%= result.content %>">
                <!-- 3. 전송누르면 그걸로 기존에 있던 document를 수정해줌  -->
                <button type="submit">전송</button>
            </form>
    </body>
    </html>

    <hr />

    f12에서 network의 headers 부분입니다.
    Request URL:
    http://localhost:8080/edit?_method=PUT
    <span style="color: #ff0000;">Request Method:</span>
    <span style="color: #ff0000;">POST => 이 부분이 put으로 떠야하나요 ? </span>
    Status Code:
    302 Found
    Remote Address:
    [::1]:8080
    Referrer Policy:
    strict-origin-when-cross-origin
    Response Headers
     Raw
     
    Request Headers
     Raw
     
     
     
    Console
    Issues 
     
     
     
    top 
     
     
    Default levels
     
     
    1 Issue: 
    1
     
     
     Hide network Preserve log Selected context only Group similar messages in console Show CORS errors in console
     Log XMLHttpRequests Eager evaluation Autocomplete from history Treat code evaluation as user action
     
    
     
    652ce9d…:1 Refused to apply style from 'http://localhost:8080/list.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
    Navigated to http://localhost:8080/list
    
     
     
     
     
     
     
     
     
     
     
    Network Log Row Name: edit?_method=PUT
     
    
    
    

    <hr />

    수정을 해도 몽고디비에도, html에도 반영이 안되는데 어디가 문제인걸까요 ㅠㅠ 하루종일 붙잡고 있었는데 도저히 모르겠습니다.
    도움주시면 감사드리겠습니다.....
    #105651

    codingapple
    키 마스터
    폼태그에 enctype="multipart/form-data" 지워봅시다
    #105656

    방수연
    참가자
    감사합니다!!
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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