indexRoute.js
app.patch("/persons", index.UpdatePerson);
indexController.js
// 사람 업데이트
// 한가지의 변수만 update 하고 싶은 경우가 있으므로 각각의 변수들마다 if를 사용한다.
exports.UpdatePerson = async function (req, res) {
const {Person_Name, Gender, Birthday, Address, Rented_Book_Id} = req.body;
// Person_Name이 body값에 담겨져 있고 타입이 string이 아니라면?!
if (Person_Name && typeof Person_Name !=="string"){
return res.send({
isSuccess: false,
code :400,
message: "값의 형식을 정확히 해주세요",
});
}
if(Gender && typeof Gender !== "string"){
return res.send({
isSuccess: false,
code: 400,
message: "값의 형식을 정확히 해주세요",
}) ;
}
if(Address && typeof Address !== "string"){
return res.send({
isSuccess: false,
code: 400,
message: "값의 형식을 정확히 해주세요",
});
}
if(Rented_Book_Id && typeof Rented_Book_Id !== "string"){
return res.send({
isSuccess: false,
code: 400,
message: "값의 형식을 정확히 해주세요",
});
}
var regex = RegExp(/^[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/);
if (Birthday && !regex.test(Birthday)) {
return res.send({
isSuccess: false,
code: 400,
message: "날짜 형식을 확인해주세요",
});
}
}
형식 다르게 하여서 포스트맨으로 확인

이제 DB에 연결해 주도록 하쟈
exports.UpdatePerson = async function (req, res) {
const {Person_Name, Gender, Birthday, Address, Rented_Book_Id} = req.body;
// Person_Name이 body값에 담겨져 있고 타입이 string이 아니라면?!
if (Person_Name && typeof Person_Name !=="string"){
return res.send({
isSuccess: false,
code :400,
message: "값의 형식을 정확히 해주세요",
});
}
if(Gender && typeof Gender !== "string"){
return res.send({
isSuccess: false,
code: 400,
message: "값의 형식을 정확히 해주세요",
}) ;
}
if(Address && typeof Address !== "string"){
return res.send({
isSuccess: false,
code: 400,
message: "값의 형식을 정확히 해주세요",
});
}
if(Rented_Book_Id && typeof Rented_Book_Id !== "string"){
return res.send({
isSuccess: false,
code: 400,
message: "값의 형식을 정확히 해주세요",
});
}
var regex = RegExp(/^[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/);
if (Birthday && !regex.test(Birthday)) {
return res.send({
isSuccess: false,
code: 400,
message: "날짜 형식을 확인해주세요",
});
}
try {
const connection = await pool.getConnection(async (conn) => conn);
try {
// rows에 select * from person; 데이터를 담아줌
const [rows] = await indexDao.UpdatePerson(
connection,
Person_Name,
Gender,
Birthday,
Address,
Rented_Book_Id,
);
return res.send({
result: rows,
isSuccess: true,
code: 200, // 요청 실패시 400번대 코드
message: "사람 생성 성공",
});
} catch (err) {
logger.error(`Update Query error\n: ${JSON.stringify(err)}`);
return false;
} finally {
connection.release();
}
} catch (err) {
logger.error(`UpdateStatement DB Connection error\n: ${JSON.stringify(err)}`);
return false;
}
}
==============================
# index.route.js
app.patch("/persons:/Person_ID", index.UpdatePerson);
# indexController.js
try {
const connection = await pool.getConnection(async (conn) => conn);
try {
// Person_ID validaiton
const IsValidPersonId = await indexDao.IsValidPersonId(Person_ID);
if(!IsValidPersonId){
return res.send({
isSuccess: false,
code: 410,
message: "입력하신 인덱스 넘버가 없습니다",
})
}
const [rows] = await indexDao.UpdatePerson(
connection,
Person_ID,
Person_Name,
Gender,
Birthday,
Address,
Rented_Book_Id,
);
# indexDao.js
exports.IsValidPersonId = async function (connection, Person_ID) {
const Query = `SELECT * FROM person WHERE Person_ID = ?;`;
const Params = [Person_ID];
const rows = await connection.query(Query, Params);
if(rows < 1){
return false;
}
return true;
};
=====================================

(map_env) C:\RestaurantsMap\Backend\Express>node index.js
2022-08-02 17:26:23 info: undefined - API Server Start At Port 3000
2022-08-02 17:26:39 error: Update Query error
: {}
==> update query error는 try patch에서 났다는 말!
try {
const connection = await pool.getConnection(async (conn) => conn);
try {
// Person_ID validaiton
const IsValidPersonId = await indexDao.IsValidPersonId(Person_ID);
if(!IsValidPersonId){
return res.send({
isSuccess: false,
code: 410,
message: "입력하신 인덱스 넘버가 없습니다",
})
}
console.log(1);
const [rows] = await indexDao.UpdatePerson(
connection,
Person_ID,
Person_Name,
Gender,
Birthday,
Address,
Rented_Book_Id,
);
console.log(2);
but
console.log(1)도 안 찍히고 있음
2022-08-02 17:31:22 error: Update Query error
: {}
================================================
indexDao.UpdatePerson 지우고
IsValidPersonId 만 돌려보기
에러 안남!
try {
const IsValidPersonId = await indexDao.IsValidPersonId(connection,Person_ID);
if(!IsValidPersonId){
return res.send({
isSuccess: false,
code:410,
message:"유효한 인덱스가 아님당",
});
}
return res.send({
result: rows,
isSuccess: true,
code: 200, // 요청 실패시 400번대 코드
message: "사람 업데이트 성공",
});

# indexDao.js에
updatePerson넣어주고!!
exports.UpdatePerson= async function (
connection,
Person_ID,
Person_Name,
Gender,
Birthday,
Address,
Rented_Book_Id,
) {
// questionmark 순서대로 params을 넣어줘야 한당
const Query = `update person set Person_Name = ifnull(?, Person_Name), Gender = ifnull(?, Gender), Birthday = ifnull(?,Birthday),
Address = ifnull(?, Address), Rented_Book_Id = ifnull(?, Rented_Book_Id) where Person_Id = ?;`;
const Params = [Person_Name,Gender,Birthday,Address,Rented_Book_Id,Person_ID];
const rows = await connection.query(Query, Params);
return rows;
};
