개별조회와 삭제는 경로가 일치하기 때문에 .route를 이용하여 묶어서 작업하려고 합니다.
app
.route('경로')
.get(핸들러함수)
.delete(핸들러함수)
이 코드에서 핸들러 함수를 작성한다고 봐주시면 좋을 것 같습니다.
회원 개별 탈퇴
.route('/users/:num')
.delete((req,res)=>{
let { num } = req.params;
num = parseInt(num);
if (!db.has(num)) {
res.status(404).json({
message: "찾는 유저가 없습니다."
});
return;
}
const user = db.get(num);
db.delete(num);
res.status(200).json({
message: `${user.name}님 감사했습니다.`
});
})
회원 탈퇴는 회원 개인이 탈퇴하는 것이기 때문에 params 값으로 num을 받아옵니다. 이때 넘어온 params 값은 문자열이기 때문에 객체 설정할 때 숫자로 받아오게 해 놔서 문자열을 숫자로 변경을 해줍니다. get과 마찬가지로 has를 통해 유저가 존재하는지 확인을 하고 유저가 없으면 404 코드를 전달해 주고, 유저가 존재하면 get함수를 이용해 user의 값을 받아옵니다. 그리고 db에서 delete함수를 이용해 유저를 삭제하고, 200 코드를 보내 성공했다 알려준 뒤에 받아온 user의 정보를 이용해 탈퇴한 사람의 이름 혹은 아이디를 사용하여 OOO님 감사했습니다 라는 메시지를 전달해 주면 기본적으로 회원 개별 탈퇴가 완료가 됩니다.
DB를 이용한 개별 삭제
try {
//유저확인
const userSearch = "select * from users where email = ?";
const [[userCheck]] = await conn.query(userSearch, [email]);
if (!userCheck) {
res.status(404).json({
message: "찾는 유저가 없습니다."
});
return;
}
await conn.query("delete from users where email = ?", [email]);
res.status(200).json({
message: `${userCheck.name}님 감사했습니다.`
});
} catch (err) {
console.log(err);
throw new Error(err);
}
'프로젝트 > 1.youtube-project' 카테고리의 다른 글
[실전]미니 프로젝트 - 채널 "생성" (0) | 2023.12.14 |
---|---|
[실전]미니 프로젝트 - 로그인 (0) | 2023.12.14 |
[실전]미니 프로젝트 - 회원 개별 "조회" (0) | 2023.12.14 |
[실전]미니 프로젝트 - 회원가입 (0) | 2023.12.14 |
프로젝트 시작 - youtube API project (0) | 2023.12.13 |