import { prop, staticMethod, instanceMethod, Typegoose, ModelType, InstanceType } from 'typegoose'; export class User extends Typegoose { @prop() email?: string; @prop() username?: string; @staticMethod public static encryptPassword(password, done) { let bcrypt = require('bcrypt'); bcrypt.genSalt(10, (err, salt) => { if (err) { return done(err); }; bcrypt.hash(password, salt, (err, hash) => { return done(err, hash); }); }); }; @staticMethod public static validatePassword(password, hash, done){ let bcrypt = require('bcrypt'); bcrypt.compare(password, hash, (err, res) => { return done(err, res); }); }; @instanceMethod public isVerified(done) { return done(null, true); }; } export const UserModel = new User().getModelForClass(User);