회원가입 중복확인 오류

HEUKWU·2023년 1월 15일
0

잘 끝난줄 알았던 회원가입 아이디 중복확인 기능이 불능이 되었다.
ReferenceError: Can't find variable: check
콘솔창에 중복여부를 판단하는 check변수를 찾을 수 없다고 나온다. 분명히 아까까지 잘만 되던 기능이 왜 갑자기 불능이 됐을까.
먼저 중복확인 기능을 간단하게 살펴보면

function(
	id = $('#loginId').val()
     
    $.ajax({
       type: "GET",
       url: "/api/double",
       data: {},
        success: function (response) {
          let user = response["user"];
          for (let i = 0; i < user.length; i++) {
              let dbId = user[i]['id']
              if (dbId === id) {
                check = 1;
                break;
              } else {
                check = 0
              }
            }
          if(check === 1) {
            alert('이미 사용중인 아이디입니다.')
          } else {
             alert('사용 가능한 아이디입니다.')
             //성공 여부를 알려주는 코드
          }

DB에서 불러온 아이디 중 사용자가 입력한 아이디가 일치하는 부분이 있다면 이미 사용중인 아이디라는 알림을 보내고 없다면 성공시키는 로직이다.

꼼꼼히 코드를 살펴보던중 아까 전 DB의 내용들을 삭제한 기억이 떠올랐다. 바로 DB에서 불러온 내용이 비어있기 때문에 발생한 오류였다.
response = {user: []}
위 코드에서 response를 콘솔에 출력한 내용이다. 배열 user 안에 있는 내용 중 id값을 사용자의 입력값이랑 비교해야 하는데 user안에는 id가 없으니 아무일 없이 반복문을 빠져나와 버리고 check변수는 선언조차 되지 않았다. 따라서 변수가 없다는 오류를 냈던 것이다.

문제를 찾았으니 해결방법은 아주 간단하다.

if (user.length === 0) {
      alert('사용가능한 아이디입니다.');
      //성공 여부를 갈려주는 코드
      } else {
          for (let i = 0; i < user.length; i++) {
            let dbId = user[i]['id']
            if (dbId === id) {
              check = 1;
              break;
            } else {
              check = 0
            }
          }
          if (check === 1) {
            alert("이미 사용중인 아이디입니다.");
          } else {
            alert("사용 가능한 아이디입니다.")
            //성공 여부를 알려주는 코드
          }
      }

if문을 추가해 배열user가 비어있다면 중복체크를 성공시키고 아니라면 원래의 로직을 실행하면 된다.

처음 로직을 검사했을때는 DB에 내용들이 저장되어 있었기 때문에 이런 오류가 나리라고 전혀 예상하지 못했다. 앞으로는 좀더 꼼꼼히 코드를 살펴보고 검사도 더 확실하게 해야겠다.

0개의 댓글

관련 채용 정보