Метод экземпляра Mongoose не существует в экземпляре (документе) в VSCode - PullRequest
0 голосов
/ 03 февраля 2019

Я использую Typescript со строгой проверкой типов (кроме strictPropertyInitialization).У меня есть интерфейс ниже:

export interface User extends Document {
  email: string;
  password: string;
}

У меня есть схема:

export const UserSchema: Schema = new Schema({
...
});

и метод экземпляра:

UserSchema.methods.checkPassword = function(...){...};

Когда я пытаюсь получить доступ к этому экземпляруМетод:

Служба:

async findOneByEmail(email: string): Promise<User | null> {
    const userModel = await this.userModel.findOne({ email }).exec();
    return userModel;
  }

Попытка доступа к методу:

const user = await this.usersService.findOneByEmail(email);
if (!user) throw new UnauthorizedException();
userToAttempt.checkPassword(...

Это дает мне ошибку, что [ts] Property 'checkPassword' does not exist on type 'User'.

НоЕсли я поменяю его на user.schema.methods.checkPassword( Это будет совершенно счастливым.Нужно ли мне определять метод в моем интерфейсе, чтобы это не было фактором?

Редактировать: До сих пор мой обходной путь заключался в дублировании метода экземпляра в интерфейсе, который я не большой поклонник.

export interface User extends Document {
  email: string;
  password: string;

  checkPassword(...): any;
}

Я закончил тем, что делал что-то похожее на эту статью: https://brianflove.com/2016/10/04/typescript-declaring-mongoose-schema-model/

...