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

연호진님의 프로필 이미지

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

노드 리액트 기초 강의 #12 토큰 생성 with jsonwebtoken

TypeError: user.comparePassword is not a function 라고 에러메시지가 뜹니다..

해결된 질문

21.07.21 18:13 작성

·

494

0

현재 토큰생성 with jsonwebtoken 들으면서 진행중에 있는데요.

여기서 TypeError: user.comparePassword is not a function 라고 뜨면서 postman이 작동하지 않고있습니다..

무슨이유일까요

// Login Route 생성
app.post('/login', (req, res) => {
// 요청된 이메일을 데이터베이스 안에서 있는지 찾는다
User.findOne({ email: req.body.email }, (err, user) => {
if(!user) {
return res.json({
loginSuccess: false,
message: "제공된 이메일에 해당되는 유저가 없습니다."
})
}
// 요청된 이메일이 데이터 베이스에 있다면 비밀번호가 맞는건지 확인한다
user.comparePassword(req.body.password, (err, isMatch) => {
if(!isMatch)
return res.json({ loginSuccess: false, message: "비밀번호가 틀렸습니다." })
// 비밀번호까지 맞다면 토큰을 생성한다.
user.generateToken((err, user) => {
if(err) return res.status(400).send(err);
// 쿠키에 토큰을 저장한다.
res.cookie("x_auth", user.token)
.status(200)
.json({ loginSuccess: true, userId: user._id })
})
})
})
})

답변 1

1

연호진님의 프로필 이미지
연호진
질문자

2021. 07. 21. 19:10

해결했습니다..

지현님의 프로필 이미지

2021. 08. 26. 12:30

어떻게 해결하셨나요?

연호진님의 프로필 이미지
연호진
질문자

2021. 08. 26. 17:48

app.post('/login', (req, res)

이 부분에서 endpoint를 '/api/users/login'으로 변경했더니 해결이되더군요.