add 와 같이 edit 버튼을 만들었다.
이제 edit 버튼이 기능을 할 수 있도록 구현을 해볼 것이다.
우선, 버튼을 누르면, add 에서 작성하는 폼과 유사한 폼이 나와야한다.
add.jade 와 똑같은 edit.jade 를 복사하고, edit 의 형식대로 작성한다.
(edit.jade)
article
- rid = encodeURIComponent(topic['@rid'])
form(action='/topic/'+rid+'/edit' method='post')
p
input(type='text' name='title' placeholder='title' value=topic.title)
p
textarea(name='description' placeholder='description')
=topic.description
p
input(type='text' name='author' placeholder='author' value=topic.author)
p
input(type='submit')
input
에서 value
를 입력하면, 해당 창에 값이 들어가있게된다.
textarea
에서는, = topic.description
을 태그 밖에 사용하면된다.
form 에서 action 은, 수정한 데이터를 어떤 라우트로 보낼 것인지 작성하는 것인데, /topic/@rid/edit
의 형식으로 post
메서드를 하는 방법의 라우트로 보낸다.
(아직 라우터를 만들지 않았기 때문에, 해당 코드만 작성하면 오류가 나올 것이다.)
이 코드를 통해서, add 와 유사한 폼 형태에 데이터에 대한 정보가 입력되어있는 형식까지 작성했다.
(edit.jade 의 형식)
이제 데이터를 보여주는 것까지는 완료했고, 이제는 '제출'버튼을 누르면, post
로 orientdb에 보내서 수정을 해야한다.
해당 라우터를 작성한다.
app.post('/topic/:id/post', function(req,res){
var sql = "UPDATE topic SET title=:t,description=:d,author=:a WHERE @rid=:rid";
var id = req.params.id;
var title = req.body.title;
var desc = req.body.description;
var author = req.body.author;
db.query(sql.{
params:{
t:title,
d:desc,
a:author,
rid:id
}
}).then(function(topics){
res.redirect('/topic/'+encodeURIComponent(id));
});
});