import { registerDecorator, ValidationArguments, ValidationOptions, ValidatorConstraint, ValidatorConstraintInterface } from 'class-validator'; export function IsMongoObjectId(validationOptions?: ValidationOptions) { return (object: any, propertyName: string) => { registerDecorator({ target: object.constructor, propertyName, options: validationOptions, validator: IsMongoObjectIdConstraint, }); }; } @ValidatorConstraint({ name: 'IsMongoObjectId' }) export class IsMongoObjectIdConstraint implements ValidatorConstraintInterface { validate(value: any) { try { if (typeof value === "string") { return value === new (require('mongoose').Types.ObjectId)(value).toString() } else { return false } } catch (error) { return false } } defaultMessage(validationArguments?: ValidationArguments): string { return "validation.INVALID_MONGO_ID" // return "{"+validationArguments.property + "} " + "response.message.mongoObjectIdWrong } }