[5주차 04] 로그인 고도화

개발냥이·2025년 2월 20일

데브코스

목록 보기
17/75
post-thumbnail

📌로그인 예외처리

로그인을 하다 보면 아이디나 비밀번호가 맞지 않아 오류가 발생한다.
오류에 맞는 예외를 처리해봤다.

나의 생각 [forEach문 사용]

  const {userId, pw} = req.body;

  // userId와 pw가 맞는지 확인
  db.forEach((v, i) => {
    if (v.userId == userId && v.pw == pw)
      res.status(201).json({
        message: `${userId}님 어서오세요 ㅎㅎ`,
      });
    else if (v.userId != userId) {
      res.status(404).json({
        message: `ID를 다시 확인해주세요`,
      });
    } else {
      res.status(404).json({
        message: `pw 다시 확인해주세요`,
      });
    }
  });

나는 사용자 요청값을 받은 후 db에 저장된 내용을
forEach문으로 순회하면서 아이디와 비밀번화가 맞는지 확인 한 후
둘 중 알맞지 않은 것이 있다면 예외를 처리해주었다.

강의 내용 [객체 사용]

  let loginData = {};

  // 사용자 찾기
  db.forEach(v => {
    if (v.userId === userId) {
      loginData = v;
    }
  });

  if (!isEmpty(loginData)) {
    console.log('아이디 맞음');

    //pw
    if (loginData.pw === pw) {
      console.log('비밀번호 맞다');
    } else {
      console.log('비밀번호 아니다');
    }
  } else {
    console.log('입력하신 아이디는 없습니다.');
  }
});

const isEmpty = obj => {
  if (Object.keys(obj).length === 0) {
    return true;
  } else {
    return false;
  }
};

하지만 강의에서는 객체(loginData)를 생성 후
forEach()문을 통해 아이디를 찾은 후 아이디가 맞다면
객체에 값을 할당하여 객체가 비워있는 지 비워있지 않은지 여부에 따라
예외를 처리했다.
게다가 동일하게 반복되는 부분인 객체가 비워있는 확인하는 부분은
isEmpty()함수로 모듈화를 해줘서 재사용성까지 높였다.


🤔뭐가 더 좋은 코드일까??

솔직히 코드면에서 내가 생각한 코드가 좀 더 짧았기에 가독성면에서
내 코드가 더 좋다는 생각을 했다 ㅋㅋㅋ 넘 부끄럽다 ㅠㅠㅠ
하지만 역시 강사님 👍👍 당연히 강사님 코드가
예외 처리나 성능면에서 훨씬 우수했다!!

[이유]
나의 코드에 경우 forEach()문을 통해 db에 저장되어 있는 모든 값을
순회
하면
서 찾기 때문에 db에 많은 값이 저장되어 있을 경우 오류가 발생할
확률이 높아지고 메모리가 많이 소모되어 성능이 좋지 못한다 ㅠㅠ

강사님 코드는 알맞은 ID값을 객체에 할당한 뒤 해당하는 ID값을 통해
db에서 사용자 정보를 찾기 때문에 db를 한번만 순회하면 되는 좋은 코드였다.
즉 메모리도 많이 소모하지 않아 나의 코드보다 성능이 훨 좋았다 👍👍


😁후기

강의를 보다보면 중간 중간 강의를 멈추고 직접 해보라고 하시는데
이때 직접 해보는 게 정말 유익하고 도움이 많이 되는 거 같다 :)
직접 구현에 성공했을 땐 짜릿하고 실패했을 때도 강의를 보며 새롭게 알게 되어 머릿속에 잘 남는 거 같다 👍👍
이번엔 결론적으로 실패하긴 했지만 로그인 예외를 처리하는 좋은 방법을
하나 알게 된 거 같아 기쁘다 😆😆

profile
웹 개발자가 되고픈

0개의 댓글