找不到用户的方法.js



我对express中的方法有一些问题。这是错误代码

index.js

app.post('/login', function (req, res) {
User.findOne({ email: req.body.email }, function (err, user) {
if (!user) {
return res.json({
loginSuccess: false,
message: "이메일이 존재하지 않습니다"
})
}
user.comparePassword(req.body.password, function (err, isMatch) {
if (!isMatch) {
return res.json({
loginSuccess: false,
message: "비밀번호가 틀립니다."
})
}
user.generateToken(function (err, user) {
if (err) return res.status(400).send(err);
res.cookie("x_auth", user.token)
.status(200)
.json({ loginSuccess: true, userId: user._id })
})
})
})
})

User.js

userSchema.method.comparePassword = function (plainPassword, cb) {
bcrypt.compare(plainPassword, this.password, function (err, isMatch) {
if (err) return cb(err)
cb(null, isMatch)
})
}

错误

TypeError:user.comparePassword不是函数在/Users/baeyungug/Documents/Nodejs_React_basic/index.js:58:18位于/Users/baeyungug/Documents/Nodejs_React_basic/node_modules/mongoose/lib/model.js:4870:16位于/Users/baeyungug/Documents/Nodejs_React_basic/node_modules/mongoose/lib/model.js:4870:16位于/Users/baeyungug/Documents/Nodejs_React_basic/node_modules/mongoose/lib/helpers/promiseOrCallback.js:24:16位于/Users/baeyungug/Documents/Nodejs_React_basic/node_modules/mongoose/lib/model.js:4893:21位于/Users/baeyungug/Documents/Nodejs_React_basic/node_modules/mongoose/lib/query.js:44400:11位于/Users/baeyungug/Documents/Nodejs_React_basic/node_modules/karem/index.js:136:16在processTicksAndRejections(internal/process/task_queues.js:79:11(在以下位置对函数实例发出"error"事件:位于/Users/baeyungug/Documents/Nodejs_React_basic/node_modules/mongoose/lib/model.js:4872:13位于/Users/baeyungug/Documents/Nodejs_React_basic/node_modules/mongoose/lib/helpers/promiseOrCallback.js:24:16[…与原始堆栈跟踪匹配的行…]在processTicksAndRejections(internal/process/task_queues.js:79:11(

应该是

userSchema.methods.comparePassword = function(plainPassword, cb){
bcrypt.compare(plainPassword, this.password, function(err, isMatch) {
if(err) return cb(err)
cb(null,isMatch)
})}

方法更改为方法

最新更新