返回的猫鼬模式方法不是函数

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