삭제는 정말 간단하게 post.js에 아래와 같이 delete라우트를 추가해 DB에서 포스트를 삭제해주면 끝입니다.
router.post('/delete', (req, res) => {
if (CheckAuth(req, res)) {
req.database.query(`DELETE FROM post WHERE id = ${req.body.id};`, (err) => {
if (err) throw err;
res.status(200).redirect('/');
});
}
});
수정은 조금 더 복잡한데 우선 views폴더에 update를 추가해줍니다.
extends layout
block post
script(src="https://cdn.quilljs.com/1.3.6/quill.js")
link(href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet")
.Body
div
form(method='post' action='update/process')
input.delete-text(type='hidden' name='id' value=id)
label(for='category') 메뉴
select(name="category")
each category in categories
if(category.name === _category)
option(value=category.name selected)= category.name
else
option(value=category.name)= category.name
br
label(for='title') 제목
input.input-text(type='text' name='title' value=title)
br
input(type='hidden' name='body')
#editor-container(value= body)
br
input(type='submit' value='수정')
script(src = '/scripts/quill-write.js')
write.pug와 거의 비슷하지만 카테고리와 내용을 수정하려는 글로 초기화시켜줍니다.
그리고 post.js에 아래 두개의 라우트를 추가해줍니다.
router.post('/update', (req, res) => {
if (CheckAuth(req, res)) {
req.database.query(`SELECT * FROM POST WHERE id = ${req.body.id};`, (err, post) => {
if (err) throw err;
res.render('update', {
session: req.session,
title: post[0].title,
_category: post[0].category,
body: post[0].body,
id: req.body.id,
categories: req.categories
});
});
}
});
router.post('/update/process', (req, res) => {
if (CheckAuth(req, res)) {
let category = req.database.escape(req.body.category);
let title = req.database.escape(req.body.title);
let body = req.database.escape(req.body.body);
console.log(body);
req.database.query(
'UPDATE post ' +
`SET category = ${category}, title = ${title}, writtentime = '${moment().format()}',` +
` body = ${body} WHERE id = ${req.body.id};`,
(err, result) => {
if (err) throw err;
console.log(result);
res.status(200).redirect(`/post/${req.body.id}`);
}
);
}
});
update에서는 수정하는 페이지를 보여주고 update/process에서는 수정된 내용을 DB에 반영해줍니다. 전체적으로 write와 비슷한 코드입니다.
이렇게 가장 기본적인 글 생성, 읽기, 수정, 삭제 기능을 전부 구현했습니다.
다음에는 지금까지 개발한 웹을 호스팅하는 방법에 대해 포스팅하겠습니다.