В настоящее время я пытаюсь добавить статический метод в мою схему mongoose, но я не могу найти причину, почему он не работает таким образом.
Моя модель:
import * as bcrypt from 'bcryptjs';
import { Document, Schema, Model, model } from 'mongoose';
import { IUser } from '../interfaces/IUser';
export interface IUserModel extends IUser, Document {
comparePassword(password: string): boolean;
}
export const userSchema: Schema = new Schema({
email: { type: String, index: { unique: true }, required: true },
name: { type: String, index: { unique: true }, required: true },
password: { type: String, required: true }
});
userSchema.method('comparePassword', function (password: string): boolean {
if (bcrypt.compareSync(password, this.password)) return true;
return false;
});
userSchema.static('hashPassword', (password: string): string => {
return bcrypt.hashSync(password);
});
export const User: Model<IUserModel> = model<IUserModel>('User', userSchema);
export default User;
IUser:
export interface IUser {
email: string;
name: string;
password: string;
}
Если я попытаюсь позвонить User.hashPassword(password)
, я получаю следующую ошибку [ts] Property 'hashPassword' does not exist on type 'Model<IUserModel>'.
Я знаю, что нигде не определял метод, но я действительно не знаю, где бы я мог это выразить, поскольку я не могу просто поставить статический метод в интерфейс. Надеюсь, вы сможете помочь мне найти ошибку, спасибо заранее!