웹 풀스택
[Node.js] 유튜브 서비스 - 로그인 서비스(DB 연결)
kevinmj12
2025. 2. 26. 21:30
https://makeaccident.tistory.com/121
[Node.js] 유튜브 서비스 - 로그인(POST)
app.post("/login", (req, res) => { let body = req.body; let userId = body.id; let password = body.password; // 정보가 누락된 경우 예외 처리 if (!userId) { res.status(400).json({ message: "id가 포함되어있지 않습니다.", }); } else if (
makeaccident.tistory.com
로그인 서비스를 데이터베이스에 연결하여 구현해보자.
// 1. 로그인
router.post("/login", (req, res) => {
let body = req.body;
let email = body.id;
let password = body.password;
// 정보가 누락된 경우 예외 처리
if (!email) {
res.status(400).json({
message: "id가 포함되어있지 않습니다.",
});
} else if (!password) {
res.status(400).json({
message: "password가 포함되어있지 않습니다.",
});
} else {
conn.query(
`SELECT * FROM users WHERE email=?`,
email,
(err, rows, fields) => {
if (err instanceof Error) {
console.log(err);
return;
}
let loginUser = rows[0];
if (loginUser) {
if (loginUser.password == password) {
res.json({
message: `${loginUser.name}님 환영합니다!`,
});
} else {
res.json({
message: "패스워드가 일치하지 않습니다",
});
}
} else {
res.status(404).json({
message: `${email}에 해당되는 유저가 없습니다.`,
});
}
}
);
}
});
SELECT문을 통해 검색된 결과를 loginUser에 저장하였다.
email은 유니크한 값이기 때문에 결과가 2개 이상 나올 걱정은 하지 않아도 된다.
그리고 loginUser.password와 password를 비교하여 로그인 성공을 처리하고,
나머지 예외 상황들을 맞게 처리해주면 된다.