3 글 보임 - 1 에서 3 까지 (총 3 중에서)
-
글쓴이글
-
2023년 12월 1일 18:42 #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에도 반영이 안되는데 어디가 문제인걸까요 ㅠㅠ 하루종일 붙잡고 있었는데 도저히 모르겠습니다. 도움주시면 감사드리겠습니다.....
-
글쓴이글
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
- 답변은 로그인 후 가능합니다.