TypeError:this.model不是函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeError:this.model不是函数相关的知识,希望对你有一定的参考价值。

这是我的代码

var animalSchema = new Schema({ name: String, type: String });

animalSchema.methods.findSimilarTypes = (cb) => {
  console.log(this)
  return this.model("Animal").find({ type: this.type }, cb);
};

var Animal = model("Animal", animalSchema);
var dog = new Animal({ type: "dog" });

dog.findSimilarTypes((err, dogs) =>{
  console.log(dogs); 
});

当我这样写时function(cb) { return this.model('Animal').find({ type: this.type }, cb); };一切正常。但是当我使用箭头功能时,出现错误。

TypeError:this.model不是函数

可以解决吗?

答案

这是因为箭头功能没有自己的this。它在词汇上绑定了他们的上下文。

由于您在箭头函数中使用了this.model,并且它不是该文件/控制器的实例,所以this将指向窗口对象。这将导致您的this.model不是函数的错误。

我希望它消除了您的疑问。

以上是关于TypeError:this.model不是函数的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:不是构造函数

TypeError: Object(...) 不是函数(匿名函数)

TypeError:Ajv 不是构造函数

TypeError: jQueryxxxxxx 不是函数

TypeError: $(...).on 不是函数

TypeError:rtdb.initStandalone 不是函数