• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

결과가 HTML로 뜨고 user is not defined 라고 나타나시는 분들

22.02.12 05:03 작성 조회수 198

7

 

강사님이 댓글에 답변을 달아주셨지만 그걸 해석하기가 너무 힘들어서...

저처럼 답변 한참 해석하시지 말라고 정리해둡니다

 

user가 없다고 뜨는 이유는 진짜 user를 못찾아서 입니다.

(아마 vscode에서 못찾겠다고 이미 밑줄을 그었을거에요)

user는 User.findOne 에서 실행되는 콜백함수의 인자인 user입니다.

그래서 반드시 User.findOne 스코프 안에서만 찾을 수 있습니다.

 

이 user는 언제 생기냐면, User.findOne로 해당 이메일을 가진 사용자가 있을 때 생깁니다.

이걸 받아와서 비밀번호 비교든, 토큰 생성이든 써먹으려면 이 안에 있어야겠죠.

 

오류가 분들은 아래처럼 구조가 되어있을거에요

 

User.findOne({ email: req.body.email }, (err, user) => {
// 이메일로 찾기
});

user.comparePassword(req.body.password, (err, isMatch) => {
// 이메일로 찾은 유저정보를 받아와서 비밀번호 비교
});

user.generateToken((err, user) => {
// 이메일로 찾은 유저정보를 받아와서 토큰 생성
});

 

이걸 아래처럼 바꿔주면 됩니다. 감싸주면 돼요

 

User.findOne({ email: req.body.email }, (err, user) => {
// 이메일로 찾기

user.comparePassword(req.body.password, (err, isMatch) => {
// 이메일로 찾은 유저정보를 받아와서 비밀번호 비교
});
user.generateToken((err, user) => {
// 이메일로 찾은 유저정보를 받아와서 토큰 생성
});

});

 

 

왜 저건 대문자 User이고 이건 소문자 user인거지? 생각했었는데 둘은 완전히 다른거에요.....

한시간동안 찾았네요.... 저처럼 고생하지 마시길....

 

답변 2

·

답변을 작성해보세요.

0

남궁승님의 프로필

남궁승

2022.08.17

왜 login이 안되지?.. 하고 한참 찾다가

이제 되네요

 

정말정말 감사합니다, 복받으실거에요!

0

rin217님의 프로필

rin217

2022.03.19

감사합니다 당연한건데 생각을 못했네요