[nodejs] todoApp 만들기 feat. mySQL
0. 목차
1. 개요
2. 기본세팅
3. CRUD
4. 후기
1. 개요
https://kong-dev.tistory.com/122
[nodejs]todoApp 만들기(express, nunjucks, mongodb,body-parser)
0. 목차 1. 개요 2. 기본세팅 3. HTML & CSS 4. CRUD 5. 정리 1. 개요 가장 기본이 되는 CRUD 만들어볼거다. 사용할 라이브러리는, express, nunjucks, body-parser(exprss 내장 객체 대체가능)이며, 데이터 베이..
kong-dev.tistory.com
이거 만든거.
mongoDB로 만들었던거 mySQL로 다시 만들어봄.
똑같은 부분은 제외하고 다른부분만 올릴거임..ㅇㅇ
2. 기본 세팅
2-1. mySQL
https://kong-dev.tistory.com/124
[mySQL] mySQL 기본 사용법, CRUD(Create, Read, Update, Delete)
0.목차 1. 개요 2. CREATE DATABASE 3. CREATE TABLE 4. CRUD 1. 개요 https://kong-dev.tistory.com/122?category=998366 [nodejs]todoApp 만들기(express, nunjucks, mongodb,body-parser) 0. 목차 1. 개요 2...
kong-dev.tistory.com
스키마랑 테이블은 위 링크에서 만든걸 사용하기 때문에,
따로 설명 안할거임.
mySQL connect 는
https://kong-dev.tistory.com/125
[nodejs] node에서 mySQL 연결(Error: connect ECONNREFUSED ::1:3306)
매우 간단하다. 우선 npm 을 통해 mysql 라이브러리를 다운 받아주자. $ npm init -y $ npm install mysql 다운 받은 라이브러리를 require를 통해 땡겨오고, const mysql = require('mysql') 이제 연결설정을 만..
kong-dev.tistory.com
이렇게 하면 됨
3. CRUD
3-1. Create
app.post('/create', (req, res) => {
db.query(
`INSERT INTO todo(title, dueDate) VALUES('${req.body.todo}', '${req.body.dueDate}')`,
(error, result) => {
if (error) return console.log(error);
console.log('저장 완료');
res.redirect('http://localhost:8000/list');
}
);
});
에.. 뭐 간단하다.
오히려 mongoDB보다 쉬운 듯.
mongoDB는 하나하나 가 뭔가 다 method로 이뤄진 느낌인데,
이건 query method하나에
그냥 쿼리문을 때려박으면 돼서 오히려 이게 더 편한거 같기도 하다.
호옥시 여기 있는 쿼리문들이 기억이 안난다면..?
https://kong-dev.tistory.com/124
[mySQL] mySQL 기본 사용법, CRUD(Create, Read, Update, Delete)
0.목차 1. 개요 2. CREATE DATABASE 3. CREATE TABLE 4. CRUD 1. 개요 https://kong-dev.tistory.com/122?category=998366 [nodejs]todoApp 만들기(express, nunjucks, mongodb,body-parser) 0. 목차 1. 개요 2...
kong-dev.tistory.com
와.. 내 블로그 무슨 다이소 같당 헤헿
저저 req.body.title 하고 req.body.dueDate 저부분 스트링이니까 quote 안써도 되겟지?
했는데 아님 quote 로 감싸줘야됨
안감싸주면 에러남.
3-2. Read
app.get('/list', (req, res) => {
db.query(`SELECT * FROM todo`, (error, result) => {
if (error) return console.log(error);
res.render('list.html', { postList: result });
});
});
음 짜릿하게 편하다.
아 그리고 mysql 라이브러리는 query의 결과를 배열로 리턴해주기때문에,
굳이 mongoDB 처럼 toArray() 같은짓 안해줘도 된다.
3-3. Delete
app.post('/delete', (req, res) => {
db.query(`DELETE FROM todo WHERE _id='${req.body._id}'`, (error, result) => {
if (error) return console.log(error);
res.redirect('http://localhost:8000/list');
});
});
3-4. Update
app.get('/edit/:id', (req, res) => {
const _id = Number(req.params.id);
db.query(`SELECT * FROM todo WHERE _id='${_id}'`, (error, result) => {
if (error) return console.log(error);
console.log(result);
res.render('edit.html', { udtPost: result });
});
});
app.post('/edit', (req, res) => {
const todo = req.body.todo;
const dueDate = req.body.dueDate;
const _id = Number(req.body._id);
db.query(
`UPDATE todo
SET title = '${todo}', dueDate = '${dueDate}'
WHERE _id = '${_id}'`,
(error, result) => {
if (error) return console.log(error);
res.redirect('http://localhost:8000/list');
}
);
});
귀찮아서 코드만 넣은게 아니라
진짜 쓸게 없음.
여기까지 왔으면 delete 와 update는 매우 당연한거임 ㅇㅇ
4. 후기
어려울줄 알았는데 생각보다 쉬웠다.
할만했음.
다만 좀 불-편 했던게,
async / await 을쓰고 싶은데
db.query method가 프로미스 인스턴스를 리턴하지 않기 때문에,
async / await 을 쓰는게 불가능하다.
흐으음 이걸 조금 손보는게 내일 목표임