@Meyz

Почему в mongoose не работает find?

До этого не работал с mongoose, создал модель, добавил метод, как в этом методе я могу что-то найти что-то в коллекции? Сейчас выходит ошибка this.find is not a function
Код:
interface IUser extends mongoose.Document{
  isValidUser: () => Promise<boolean>;
}

const userSchema = new Schema({
  id: String,
  login: String,
  password: String,
  regDate: {
    type: Date,
    default: Date.now()
  }
});

userSchema.methods.isValidUser = async (): Promise<boolean> => {
  const {login, password} = this;
  const foundUser = await this.find({login, password});
  return !!foundUser;
};

export const User = mongoose.model<IUser>('user', userSchema);
  • Вопрос задан
  • 549 просмотров
Решения вопроса 1
@RidgeA
Проблема в стрелочной функции - надо использовать полноценные функции

https://mongoosejs.com/docs/guide.html#methods


Do not declare methods using ES6 arrow functions (=>). Arrow functions explicitly prevent binding this, so your method will not have access to the document and the above examples will not work.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы