저번 수업에서 파일을 이용해서 구현했던 웹페이지와 동일한 구조의 웹페이지를 구현했다. 거기에 edit과 delete 기능을 추가한 정도?
중간에 오류가 나서 한참을 헤맸는데.. jade 파일에 오타가 나서였다.... ㅋㅋㅋㅋㅋㅠㅠㅠ 이렇게 오류라고 안뜨는 게 정말 찾기 어려운 것 같다. 열심히 삽질했네..ㅎㅎㅎ
conn.query 를 이용해서 sql 쿼리를 보내는 것은 모두 같았고, select 문의 결과가 배열로 전달되기 때문에 하나만 사용하려면(?) rows[0] 이렇게 jade 파일의 인자로 보내주어야 한다. (설명이 개같지만 아무튼 그렇다. 아리까리하면 console에 한 번 출력해보는 게 빠를 듯 하다.)
var express = require('express');
var bodyParser = require('body-parser');
var fs = require('fs');
var mysql = require('mysql');
const { values } = require('underscore');
var conn = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'o2'
});
conn.connect();
var app = express();
app.use(bodyParser.urlencoded({extended: false}));
app.set('views', './views_mysql'); //템플릿 엔진 파일 폴더를 지정해주는 코드
app.set('view engine', 'jade'); //템플릿 엔진으로 jade를 사용할 것이다.
app.locals.pretty = true;
app.get('/topic/add', function(req, res){
var sql = "select id, title from topic;"
conn.query(sql, function(err, topics, fields){
if (err){
console.log(err);
res.status(500).send('Internal Server Error');
}
res.render('add', {topics: topics});
})
})
app.post('/topic/add', function(req, res){
var title = req.body.title;
var description = req.body.description;
var author = req.body.author;
var sql = 'insert into topic (title, description, author) values (?, ?, ?)';
conn.query(sql, [title, description, author], function(err, result, fields){
if (err){
console.log(err);
res.status(500).send('Internal Server Error');
} else {
res.redirect('/topic/'+result.insertId);
}
})
})
app.get('/topic/:id/edit', function(req, res){
var sql = "select id, title from topic;"
conn.query(sql, function(err, topics, fields){
var id = req.params.id;
if (id){
var sql = 'select * from topic where id=?';
conn.query(sql, id, function(err, topic, fields){
if (err){
console.log(err);
res.status(500).send('Internal Server Error');
} else{
res.render("edit", {topics:topics, topic:topic[0]})
}
})
} else{
console.log('There is no id.');
res.status(500).send('Internal Server Error');
}
})
})
app.post('/topic/:id/edit', function(req, res){
var title = req.body.title;
var description = req.body.description;
var author = req.body.author;
var id = req.params.id;
var sql = 'update topic set title=?, description=?, author=? where id=?';
conn.query(sql, [title, description, author, id], function(err, rows, fields){
if (err){
console.log(err);
res.status(500).send('Internal Server Error');
} else {
res.redirect('/topic/'+id);
}
})
})
app.get('/topic/:id/delete', function(req, res){
var sql = "select id, title from topic;"
conn.query(sql, function(err, topics, fields){
var sql = 'select * from topic where id=?';
var id = req.params.id;
conn.query(sql, id, function(err, topic){
if (err){
console.log(err);
res.status(500).send('Internal Server Error');
} else {
if (topic.length === 0){
console.log('There is no id.');
res.status(500).send('Internal Server Error');
} else{
res.render('delete', {topics: topics, topic: topic[0]});
}
}
})
})
})
app.post('/topic/:id/delete', function(req, res){
var id = req.params.id;
var sql = 'delete from topic where id=?';
conn.query(sql, id, function(err, result){
res.redirect('/topic');
})
})
app.get(['/topic', '/topic/:id'], function(req, res){
var sql = "select id, title from topic;"
conn.query(sql, function(err, topics, fields){
var id = req.params.id;
if (id){
var sql = 'select * from topic where id=?';
conn.query(sql, id, function(err, topic, fields){
if (err){
console.log(err);
res.status(500).send('Internal Server Error');
} else{
res.render("view", {topics:topics, topic:topic[0]})
}
})
} else{
res.render("view", {topics: topics});
}
})
})
app.listen(3000, function(){
console.log('Connected, 3000 port!');
})
'스터디📖 > Node.js' 카테고리의 다른 글
[nodejs] Node.Js 활용하기 - 섹션 2. Session (0) | 2022.02.12 |
---|---|
[nodejs]Node.Js 활용하기 - 섹션 1. cookie (0) | 2022.02.11 |
[nodejs 강좌] Node.js 로 Database 다루기 소개와 웹애플리케이션 만들기 - 섹션 2. MySQL 을 NodeJS 로 제어 방법 (0) | 2022.02.08 |
Node.js 로 Database 다루기 소개와 웹애플리케이션 만들기 - 섹션 1. OrientDB 로 웹어플리케이션 만들기 (0) | 2022.02.07 |
[nodejs 강좌] Node.js 를 이용해 웹애플리케이션 만들기 - 섹션 9. node.js 를 이용한 웹앱 제작 실습 (0) | 2022.02.06 |