Node.js Mongoose架构方法返回不是函数
因此,在上面的代码中,我为我的用户数据库提供了一个mongoose用户模式方法,用于在每次用户尝试登录时比较存储在数据库中的加密密码Node.js Mongoose架构方法返回不是函数,node.js,mongodb,mongoose,schema,Node.js,Mongodb,Mongoose,Schema,因此,在上面的代码中,我为我的用户数据库提供了一个mongoose用户模式方法,用于在每次用户尝试登录时比较存储在数据库中的加密密码 userSchema.method.comparePassword = async function(enteredPassword){ return await bcrypt.compare(enteredPassword, this.password); } 在这段代码中,我在控件中调用了这个方法,但每次我向postman发出请求时,它都会返回一个错
userSchema.method.comparePassword = async function(enteredPassword){
return await bcrypt.compare(enteredPassword, this.password);
}
在这段代码中,我在控件中调用了这个方法,但每次我向postman发出请求时,它都会返回一个错误,表示User.comparePassword不是函数。我已经寻找了一段时间关于其他人经历过这种情况,但没有什么可以解决我的问题,它让我困惑于如何继续解决这个问题。任何建议或提示都非常重要。
快速编辑我正在使用mongodb 4.4版和mongoose 5.12.5版我更愿意像mongoose文档中提到的方法一样使用它 其中提到的名称是method函数的一个参数。不像您在这里所做的那样 如。 const schema=kittySchema=new schema(…)
我认为这是一个打字错误,你在
方法
之后漏掉了“s”。试试这个:
schema.method('meow', function () {
console.log('meeeeeoooooooooooow');
})
const Kitty = mongoose.model('Kitty', schema);
const fizz = new Kitty;
fizz.meow();
Mongoose文档尝试过,返回了相同的错误,我看到另一个快速编辑,有人建议我备份并重新安装mongodb。我对编程比较陌生,但你会推荐这个吗?也要这样做,确保你也在使用最新版本的猫鼬。然后检查。只是确认两种方法都在同一个js文件中,对吗?重新安装mongodb就成功了。仍然不确定是什么导致了问题。
schema.method('meow', function () {
console.log('meeeeeoooooooooooow');
})
const Kitty = mongoose.model('Kitty', schema);
const fizz = new Kitty;
fizz.meow();
userSchema.methods.comparePassword = async function(enteredPassword){
return await bcrypt.compare(enteredPassword, this.password);
}