import { Injectable } from "@nestjs/common"; import { Model } from 'mongoose'; import { User, UserDocument } from '../schemas/user.schema'; import { InjectModel } from '@nestjs/mongoose'; import { ValidationArguments, ValidatorConstraint, ValidatorConstraintInterface } from "class-validator"; @ValidatorConstraint({ name: 'UserExists', async: true }) @Injectable() export class UserExistsRule implements ValidatorConstraintInterface { constructor( @InjectModel(User.name) private readonly userModel: Model, ) {} async validate(value: string) { try { await this.userModel.find({email: value}); } catch (e) { return false; } return true; } defaultMessage(args: ValidationArguments) { return `User doesn't exist`; } }