【发布时间】:2020-06-07 23:47:35
【问题描述】:
我有一个如下所示的用户架构:
const userSchema = new mongoose.Schema({
...
resetToken: {
type: String
}
})
下面是我在模式定义下定义的一个猫鼬模式方法:
userSchema.methods.generateResetToken = function() {
const reset_token = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15)
bcrypt.hash(reset_token, 10, function(err, hash) {
if (err) return winston.error(err.message)
return hash
})
}
这是我注册路径中的一段代码:
user = new User(_.pick(req.body, ['username', 'email', 'password']))
bcrypt.hash(req.body.password, 10, function(err, hash) {
if (err) return winston.error(err.message)
// Getting undefined logged here
console.log(user.generateResetToken())
user.password = hash
user.save()
})
当调用console.log(user.generateResetToken()) 时,我希望打印来自generateResetToken 函数的返回值。相反,我打印了undefined。当我将hash 记录到控制台时,我可以确认正在生成hash,并且一切正常。
有人知道为什么我在调用generateResetToken 函数时在我的注册路径中得到undefined 吗?谢谢。
【问题讨论】:
标签: node.js mongodb express mongoose