• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

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

21.07.21 18:13 작성 조회수 388

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

해결했습니다..

지현님의 프로필

지현

2021.08.26

어떻게 해결하셨나요?

연호진님의 프로필

연호진

질문자

2021.08.26

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

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