마이페이지에서 주소, 비밀번호를 변경할 수 있도록 했는데, 고려해야할 것들이 몇가지 있다.
우선, WHERE 조건은 어떤 것을 변경하더라도 const userId = req.body.userId
로 객체구조분해할당하여 저장해 WHERE문에 작성해주었다.
또한, 주소만 또는 비밀번호만 또는 둘다 변경하는 경우의 구분은 if문
으로 구분했다. 처음에는 첫번째 try 블록
의 if문
처럼 작성했는데 그 결과 하나만 변경하는 경우 데이터베이스가 null로 변경되었다. 따라서 if문
으로 구분해서 작성해주었다.
const db = require("../../db");
module.exports = async (req, res) => {
try {
const { address, password, userId } = req.body;
if (address && password) {
const sql = "UPDATE users SET address=?, password=? WHERE userId=?";
const params = [address, password, userId];
db.query(sql, params, (err, result) => {
if (err) throw err;
else {
res.status(200).json({
data: result,
message: "주소와 비밀번호가 모두 수정되었습니다",
});
}
});
}
if (address) {
const sql = "UPDATE users SET address=? WHERE userId=?";
const params = [address, userId];
db.query(sql, params, (err, result) => {
if (err) throw err;
else {
res
.status(200)
.json({ data: result, message: "주소정보가 수정되었습니다" });
}
});
}
if (password) {
const sql = "UPDATE users SET password=? WHERE userId=?";
const params = [password, userId];
db.query(sql, params, (err, result) => {
if (err) throw err;
else {
res
.status(200)
.json({ data: result, message: "비밀번호가 수정되었습니다" });
}
});
}
} catch (err) {
throw err;
}
};