mysql의 insert 쿼리를 똑같이 node에서 사용하면된다.
작성하고 입력할 데이터들을 html에서 받아와 쿼리문에 집어넣는 코드를 작성해보면
else if(pathname === '/create_process'){
var body = '';
request.on('data', function(data){
body = body + data;
});
request.on('end', function(){
var post = qs.parse(body);
db.query(`
INSERT INTO topic (title, description, created, author_id)
VALUES(?, ?, NOW(), ?)`,
[post.title, post.description, 1],
function(error, result){
if(error){
throw error;
}
response.writeHead(302, {Location: `/?id=${result.insertId}`});
response.end();
}
)
});
업데이트가 끝나고 리다이렉션을 하는 코드에서 result.insertId는 insert쿼리가 끝나고 응답받는 result에 insert한 데이터가 담겨있어서 거기서 꺼내는 것 같다.
--
create 링크 눌렀을 때 (위는 submit까지 입력했을 때 실행되는)
else if(pathname === '/create'){
db.query(`SELECT * FROM topic`, function(error,topics){
var title = 'Create';
var list = template.list(topics);
var html = template.HTML(title, list,
`
<form action="/create_process" method="post">
<p><input type="text" name="title" placeholder="title"></p>
<p>
<textarea name="description" placeholder="description"></textarea>
</p>
<p>
<input type="submit">
</p>
</form>
`,
`<a href="/create">create</a>`
);
response.writeHead(200);
response.end(html);
});
update 버튼 눌렀을 때
else if(pathname === '/update'){
db.query('SELECT * FROM topic', function(error, topics){
if(error){
throw error;
}
db.query(`SELECT * FROM topic WHERE id=?`,[queryData.id], function(error2, topic){
if(error2){
throw error2;
}
var list = template.list(topics);
var html = template.HTML(topic[0].title, list,
`
<form action="/update_process" method="post">
<input type="hidden" name="id" value="${topic[0].id}">
<p><input type="text" name="title" placeholder="title" value="${topic[0].title}"></p>
<p>
<textarea name="description" placeholder="description">${topic[0].description}</textarea>
</p>
<p>
<input type="submit">
</p>
</form>
`,
`<a href="/create">create</a> <a href="/update?id=${topic[0].id}">update</a>`
);
response.writeHead(200);
response.end(html);
});
});
update process
else if(pathname === '/update_process'){
var body = '';
request.on('data', function(data){
body = body + data;
});
request.on('end', function(){
var post = qs.parse(body);
db.query('UPDATE topic SET title=?, description=?, author_id=1 WHERE id=?', [post.title, post.description, post.id], function(error, result){
response.writeHead(302, {Location: `/?id=${post.id}`});
response.end();
})
});
else if(pathname === '/delete_process'){
var body = '';
request.on('data', function(data){
body = body + data;
});
request.on('end', function(){
var post = qs.parse(body);
var id = post.id;
var filteredId = path.parse(id).base;
fs.unlink(`data/${filteredId}`, function(error){
response.writeHead(302, {Location: `/`});
response.end();
})
});
var body = '';
request.on('data', function(data){
body = body + data;
});
위 코드는 form요청을 post로 보내기 때문에 body에 입력 정보를 저장하고 아래서 parse로 body를 분석하면 데이터를 객체로 쓸 수 있음
data = parse(body)
data.id, data.title, data.author