Ошибка типа: this.model не является функцией - PullRequest
1 голос
/ 07 ноября 2019

это мой код

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 не является функцией

Можно ли это исправить?

1 Ответ

1 голос
/ 07 ноября 2019

Это потому, что функции стрелок не имеют своих this . И это связывает их контекст лексически.

Поскольку вы использовали this.model в своей функции стрелки, и это не экземпляр этого файла / контроллера, this будет указывать на объект окна. Это приведет к ошибке, что ваш this.model не является функцией.

Надеюсь, это очистит ваши сомнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...