返回的猫鼬模式方法不是函数
Mongoose schema method returning is not a function
userSchema.method.comparePassword = async function(enteredPassword){
return await bcrypt.compare(enteredPassword, this.password);
}
所以在上面的代码中,我有一个猫鼬用户模式方法用于我的用户数据库,用于比较每次用户尝试登录时存储在我的数据库中的加密密码。
const ispasswordMatched = await User.comparePassword(password);
在这段代码中,我在控制器中调用了这个方法,但每次我向邮递员发出请求时,它 returns 一个错误说 User.comparePassword 不是一个函数。我已经搜索了一段时间关于其他人遇到这种情况,但没有什么能解决我的问题,这让我对如何继续解决这个问题感到困惑。非常感谢任何建议或提示。
快速编辑我正在使用 mongodb 版本 4.4 和猫鼬版本 5.12.5
我更愿意像猫鼬文档中提到的方法那样使用它
https://mongoosejs.com/docs/api.html#schema_Schema-method
其中提及名称是方法 function.Not 的参数,就像您在此处所做的一样
例如。
const schema = kittySchema = new Schema(..);
schema.method('meow', function () {
console.log('meeeeeoooooooooooow');
})
const Kitty = mongoose.model('Kitty', schema);
const fizz = new Kitty;
fizz.meow();
我认为这是一个打字错误,您在 method
之后漏掉了“s”。试试这个:
userSchema.methods.comparePassword = async function(enteredPassword){
return await bcrypt.compare(enteredPassword, this.password);
}
猫鼬文档here
userSchema.method.comparePassword = async function(enteredPassword){
return await bcrypt.compare(enteredPassword, this.password);
}
所以在上面的代码中,我有一个猫鼬用户模式方法用于我的用户数据库,用于比较每次用户尝试登录时存储在我的数据库中的加密密码。
const ispasswordMatched = await User.comparePassword(password);
在这段代码中,我在控制器中调用了这个方法,但每次我向邮递员发出请求时,它 returns 一个错误说 User.comparePassword 不是一个函数。我已经搜索了一段时间关于其他人遇到这种情况,但没有什么能解决我的问题,这让我对如何继续解决这个问题感到困惑。非常感谢任何建议或提示。 快速编辑我正在使用 mongodb 版本 4.4 和猫鼬版本 5.12.5
我更愿意像猫鼬文档中提到的方法那样使用它
https://mongoosejs.com/docs/api.html#schema_Schema-method
其中提及名称是方法 function.Not 的参数,就像您在此处所做的一样 例如。 const schema = kittySchema = new Schema(..);
schema.method('meow', function () {
console.log('meeeeeoooooooooooow');
})
const Kitty = mongoose.model('Kitty', schema);
const fizz = new Kitty;
fizz.meow();
我认为这是一个打字错误,您在 method
之后漏掉了“s”。试试这个:
userSchema.methods.comparePassword = async function(enteredPassword){
return await bcrypt.compare(enteredPassword, this.password);
}
猫鼬文档here