Express로 todo 리스트 만들기 3
1. todo 리스트 데이터 생성
- 이번엔 todo 리스트 데이터를 생성하는 기능을 만들어 봅시다.
- #1. app.js에 들어가 다음과 같은 내용을 추가해 줍니다.
import express from "express";
import cors from "cors";
import mysql from "mysql2/promise";
// DB 설정
// const pool = mysql.createPool({...});
const app = express();
app.use(express.json());
// CORS 미들웨어 추가
app.use(cors());
const port = 3000;
// 데이터 조회
// app.get(...);
// 데이터 단건조회
// app.get(...);
// 데이터 삭제
// app.delete(...);
// 데이터 생성
app.post("/:user_code/todos", async (req, res) => {
const { user_code } = req.params;
const { content, perform_date, is_completed = 0 } = req.body;
if (!content) {
res.status(400).json({
resultCode: "F-1",
msg: "content required",
});
}
if (!perform_date) {
res.status(400).json({
resultCode: "F-1",
msg: "perform_date required",
});
}
const [[lastTodoRow]] = await pool.query(
`
SELECT no
FROM todo
WHERE user_code = ?
ORDER BY id DESC
LIMIT 1
`,
[user_code]
);
// 넘버링 지정
const no = lastTodoRow?.no + 1 || 1;
const [insertTodoRs] = await pool.query(
`
INSERT INTO todo
SET reg_date = NOW(),
update_date = NOW(),
user_code = ?,
no = ?,
content = ?,
perform_date = ?,
is_completed = ?
`,
[user_code, no, content, perform_date, is_completed]
);
const [justCreatedTodoRow] = await pool.query(
`
SELECT *
FROM todo
WHERE id = ?
`,
[insertTodoRs.insertId]
);
res.json({
resultCode: "S-1",
msg: `${justCreatedTodoRow.id}번 할 일을 생성하였습니다.`,
data: justCreatedTodoRow,
});
});
// app.listen(...);
- #2. 다 되었으면, postman에 들어가서 새로운 request를 만든 후, post로 변경한 뒤, 다음과 같이 입력해 줍니다.
{
"perform_date" : "2024-03-04 12:04:00",
"content" : "숙제",
"is_completed" : 1
}
→ 이제 send 버튼을 누르면 다음과 같이 post가 된 것을 확인할 수 있습니다.
→ 브라우저에서도 정상적으로 추가된 것을 확인할 수 있습니다.
2. 수정
- 그럼 이제 수정기능을 구현해 봅시다!
- #1. app.js에서 다음 내용을 추가해 줍니다.
// 데이터 단건조회
// app.get(...)
// 데이터 수정
app.patch("/:user_code/todos/:no", async (req, res) => {
const { user_code, no } = req.params;
const [[todoRow]] = await pool.query(
`
SELECT *
FROM todo
WHERE user_code = ?
AND no = ?
`,
[user_code, no]
);
if (todoRow == undefined) {
res.status(404).json({
resultCode: "F-1",
msg: "not found",
});
return;
}
const {
content = todoRow.content,
perform_date = todoRow.perform_date,
is_completed = todoRow.is_completed,
} = req.body;
await pool.query(
`
UPDATE todo
SET update_date = NOW(),
content = ?,
perform_date = ?,
is_completed = ?
WHERE user_code = ?
AND no = ?
`,
[content, perform_date, is_completed, user_code, no]
);
const [[justModifyTodoRow]] = await pool.query(
`
SELECT *
FROM todo
WHERE user_code = ?
AND no = ?
`,
[user_code, no]
);
res.json({
resultCode: "S-1",
msg: `${justModifyTodoRow.id}번 할 일을 수정하였습니다.`,
data: justModifyTodoRow,
});
});
// 데이터 삭제
// app.delete(...)
- #2. 다 되었으면, postman에 들어가서 새로운 request를 만든 후, post로 변경한 뒤, 다음과 같이 입력해 줍니다. (url은 http://localhost:3000/localhost/todos/2라고 입력해줍니다.)
{
"perform_date" : "2024-03-04 12:50:00",
"content" : "운동"
}
→ send 버튼을 누르면 다음과 같이 수정이 되었음을 확인할 수 있습니다.
→ 브라우저도 정상적으로 수정되었음을 확인할 수 있습니다.
3. 정리하며
- 지금까지 todo 리스트 데이터 생성 및 수정에 대해 알아보았습니다.
※ Git 주소
데이터 생성 · NewBean0312/todo-backend-2024-02@68aa277
NewBean0312 committed Mar 4, 2024
github.com
데이터 수정 · NewBean0312/todo-backend-2024-02@02606c9
NewBean0312 committed Mar 4, 2024
github.com
'Back-End Study > Express' 카테고리의 다른 글
Express로 todo 리스트 만들기 2 (0) | 2024.03.02 |
---|---|
Express로 todo 리스트 만들기 1 (0) | 2024.03.01 |
DB 연동하기 (1) | 2023.11.23 |
Express로 JSON 응답 받기 (2) | 2023.11.22 |
Express.js 설치 (0) | 2023.11.22 |