인프런 커뮤니티 질문&답변

삽질개발초보님의 프로필 이미지
삽질개발초보

작성한 질문수

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

질문드립니다 findOne  결과값이 왜 null이나오는지 잘모르겠네요

작성

·

638

0

const num_auth = await this.emailsrepository.findOne({
where: { auth_num: authnum },
});
 
 
이코드는 문제의 코드입니다 authnum = String 타입입니다. 콘솔로 num_auth를 찍으면 null 이 찍힙니다. 해당 데이터가 db에 실제 존재하고있습니다..
console.log로 authnum 이 잘들어오는것도 찍혔습니다.
 
 
 
 
 
 
const findemail = await this.userRepository.findOne({
where: { email: email },
}); 근데 이코드는 이상하게 정확하게 조건절이 잘 먹히네요 왜 이러는걸까요 ?

답변 5

0

제로초님 궁금한게있습니다. 혹시 express에서 데이터베이스 sync가 false로 꺼져있는데도 불구하고 서버실행시 컬럼이 자동추가되는건 왜그런걸까요 ..? 무조건꺼져있는걸 두눈으로 똑똑히 확인했습니다!!

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

서버 시작 시 create table if not exist sql들이 주르륵 적혀나오는지 확인해보세요.

alter 명령어를 엄청때립니다..

Executing (default): ALTER TABLE users CHANGE create_at create_at DATETIME NOT NULL COMMENT '회원가입 시간'; 이런식으로 모델들에대하여 다 실행을해버리네요

타입스크립트 올인원강의도 잘보겠습니다!

 

해서 나는문제는 sync 가 false상태인데도 불구하고 모델컬럼이 지맘대로 바껴서 테스트해보려고하면 500에러를 던지네요.. 컬럼이 db랑 맞지않아서 문제가 계속 발생하네요..

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

sync말고 alter 옵션 true인 것 아닌가요?

sync alter옵션자체는 세팅을 안해놓았는데 혹시 얘 default가 false로 알고있어서요 ..

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

소스코드가 적용이 안 된 것일 수도 있습니다. nestjs는 dist 폴더 안에 들어있는 소스가 실제 소스입니다.

0

이렇게 찍힙니다! 쌉고수 제로초형님 nestjs 다음강의도 하나 더올려주시면 바로 구매 때리겠슴다 ㅠㅠ nestjs 야놀자 이런거같은 거로 지도검색api 관련된것들도 강의 하실계획은 없으실까요 ?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

authnum이 { auth_num: '192218' } 이잖아요. 이상한 걸 못 느끼시겠나요? ㅎㅎ

nestjs 강좌는 더이상 계획이 없습니다.

아 ... 방금 보니까 저렇게 값이 들어와버려서 그런거네요.. where절에선 where=authnum:192218이 들어가는거였네요.. 그럼 저걸 Object.values로 값을따로 빼줘야하는건가요,,,그렇다면.. 다른것들은 그렇게 처리를 안해주었는데 왜 정상적으로 들어온값이 그대로 나오는걸까요..?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

저게 서비스면 컨트롤러에서 데이터를 객체로 넘겨주고 있겠죠

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

위에 주석 보니까 예전에는 const { auth_num } = data; 이런 식으로 제대로 꺼내서 쓰셨는데 그걸 수정하셨네요.

이렇게 처리하면 에러는 나지만 쿼리는 정상동작하네요 ...?

아..... 중요한걸 간과하고있었네요..

정말 감사합니다 제로초님.. 진짜 강의도 너무 잘들었는데 이렇게 피드까지 바로바로해주시고 진짜 감사합니다.. 혹시 하나만 더 여쭤보고싶은데요 .. 제로초님이 신입시절 공부를하신다고하신다면 어떠한 방식으로 공부하는게 효과적일까요? ex)백엔드 로드맵 기준표대로 공부를 진행해라.. 또는 토이프로젝트를 많이해라 이런것들처럼 혹시 제로초님만의 방법이 있으면 알고싶습니다.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

가장 도움이 많이 되었던 건 진짜 실무를 하는 것이었습니다. 코딩보다 더 중요한 게 따로 있다는 걸 느낄 수 있습니다.

감사합니다 진짜 맞는말씀이신것 같네요 혹시 나중에 nodeJS관련된 백엔드 강의가 있다면 꼭 수강하겠습니다 

0

이렇게 콘솔찍으면 null 값이 찍히네요 

디비는 mariadb를 사용하고있습니다.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

console.log(authnum)과 console.log(num_auth)를 둘 다 보여주세요. 저기 위에 192218으로요.

0

Emails entity 디비 구조이며  

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

이메일 엔티티에도 auth_num이 맞나요?

네 맞습니다

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

db에 데이터가 들어있는 것과 console.log 하신 것까지 보여주셔야 해결 가능할 것 같습니다.

그런데 직접 값을 넣게되면 

const num_auth = await this.emailsrepository.findOne({

where: { auth_num: "112928"
},

});

이렇게 주게 되면 쿼리가 정상동작합니다.. 해서 받아오는 값을 where절에 넣어두고싶은데 왜 동작을 하지않는지 의문이네요.. 제로초님 슬랙코딩에 이메일인증을 추가하고싶은거거든요,,.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

authnum이 잘못되었다고밖에 추측되지 않습니다.

삽질개발초보님의 프로필 이미지
삽질개발초보

작성한 질문수

질문하기