본문 바로가기

WEB

Node.js로 웹서비스 만들기 17일차

게시글 수정하기 서버처리

 

 

 

 

//edit.ejs
<form action="/edit?_method=PUT" method="POST">
        <div class="form-group">
          <label for="todo">Todo</label>
          <input type="hidden" name="id" value="<%= data._id %>">
          <input type="text" id="todo" class="form-control" name="title" value="<%= data.제목 %>">          
        </div>

        <div class="form-group">
            <label for="dday">Due date</label>
            <input type="text" id="dday" class="form-control" name="date" value="<%= data.날짜 %>">          
          </div>
        
        <button type="submit" class="btn btn-primary">Submit</button>
      </form>

HTML에서 PUT요청을 할 수 없기 때문에

이를 가능하게 해주는 플러그인

method-override를 설치해 줘야 한다.

 

서버를 끄고 터미널에

npm install method-override 를 입력한다.

 

그 다음 server.js에 문구 추가하기

//server.js
const methodOverride = require('method-override');
app.use(methodOverride('_method'));

이렇게 하면 

<form action="/edit?_method=PUT" method="POST">

이러한 형태로 PUT요청이 가능하다.

 

그 다음 서버처리

 

//server.js
app.put('/edit', function(request, response){
    db.collection('post').updateOne({ _id : parseInt(request.body.id) }, {$set : { 제목 : request.body.title, 날짜 : request.body.date}}, function(error, result){
		response.redirect('/list'); //수정이 완료된 이후 list 페이지로 이동하기
    });   
});

콘솔에 request.body를 찍어보면

이렇게 오브젝트 형태로 넘어오게 된다.