사고쳤어요
[Node.js] 유튜브 서비스 - 채널 수정 서비스(DB 연결) 본문
https://makeaccident.tistory.com/124
[Node.js] 유튜브 서비스 - 채널 삭제, 채널 수정(DELETE, PUT)
채널 수정.put((req, res) => { let { id } = req.params; id = parseInt(id); let newChannelTitle = req.body.channelTitle; let channel = channelDb.get(id); let oldChannelTitle = channel.channelTitle; if (channel) { channel.channelTitle = newChannelTitle; c
makeaccident.tistory.com
채널 수정 서비스를 데이터베이스에 연결하여 구현해보자.
.put(
[param("id").notEmpty(), body("name").notEmpty().isString()],
(req, res) => {
validationError(req, res);
let { id } = req.params;
id = parseInt(id);
let { name } = req.body;
let sql = `UPDATE channels SET name=? WHERE id=?`;
let values = [id, name];
conn.query(sql, values, (err, rows, fields) => {
if (err) {
return res.status(400).json({
message: `err: ${err}`,
});
}
if (rows.length) {
res.json({
message: "채널 이름 수정이 완료되었습니다.",
});
} else {
res.status(404).json({
message: "채널 정보를 찾을 수 없습니다.",
});
}
});
}
)
UPDATE channels SET name=? WHERE id=? 를 통해 채널 이름 수정을 진행하였다.
하지만 실제로 요청을 해보면 문제가 발생한다.
MySQL을 보면 1번 id의 채널명이 잘 변경되었지만 Postman에서는 채널 정보를 찾을 수 없다는 메시지가 리턴된다.
UPDATE문을 실행한 경우 성공한 경우와 실패한 경우 모두 rows에 어떠한 값도 포함되지 않기 때문이다.
조금 더 자세히 살펴보기 위해 rows를 출력해보자.
rows를 출력해보면 affectedRows에 영향을 받은 row의 수가 찍혀있는 것을 알 수 있다.
만약 없는 채널 아이디에 대한 채널 이름 수정을 진행하는 경우에 이 값이 어떻게 되는지 보자.
affectedRows가 0으로 나왔다.
rows.length()가 아니라, affectedRows를 활용한다면 현재 발생한 오류를 해결할 수 있을 것이다.
if (rows.affectedRows) {
res.json({
message: "채널 이름 수정이 완료되었습니다.",
});
} else {
res.status(404).json({
message: "채널 정보를 찾을 수 없습니다.",
});
}
'웹 풀스택' 카테고리의 다른 글
[Node.js] JWT 개념과 Node.js에서 사용해보기 (0) | 2025.03.01 |
---|---|
[Node.js] 유튜브 서비스 - 채널 삭제 서비스(DB 연결) (0) | 2025.02.27 |
[Node.js] 유효성 검사: express-validatior (0) | 2025.02.27 |
[Node.js] 유튜브 서비스 - 채널 생성 서비스(DB 연결) (0) | 2025.02.26 |
[Node.js] 유튜브 서비스 - 채널 조회 서비스(DB 연결) (0) | 2025.02.26 |