Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongoose架构方法返回不是函数_Node.js_Mongodb_Mongoose_Schema - Fatal编程技术网

Node.js 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发出请求时,它都会返回一个错

因此,在上面的代码中,我为我的用户数据库提供了一个mongoose用户模式方法,用于在每次用户尝试登录时比较存储在数据库中的加密密码

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);
}