Я установил собственный уникальный декоратор валидатора в своем электронном письме с полем сущности typeORM. В Nestjs есть внедрение зависимостей, но сервис не внедряется.
Ошибка: TypeError: невозможно прочитать свойство findByEmail из undefined.
Любая помощь по реализации настраиваемого валидатора электронной почты?
user.entity.ts
@Column()
@Validate(CustomEmail, {
message: "Title is too short or long!"
})
@IsEmail()
email: string;
Мой валидатор CustomEmail
import {ValidatorConstraint, ValidatorConstraintInterface,
ValidationArguments} from "class-validator";
import {UserService} from "./user.service";
@ValidatorConstraint({ name: "customText", async: true })
export class CustomEmail implements ValidatorConstraintInterface {
constructor(private userService: UserService) {}
async validate(text: string, args: ValidationArguments) {
const user = await this.userService.findByEmail(text);
return !user;
}
defaultMessage(args: ValidationArguments) {
return "Text ($value) is too short or too long!";
}
}
Я знаю, что могу установить уникальные параметры столбца
@Column({
unique: true
})
но это вызывает ошибку mysql и ExceptionsHandler, который приводит к сбою моего приложения, поэтому я не могу справиться с этим сам ...
Спасибо!
ValidatorConstraint
. Это не часть контейнера Nest. - person Kamil Myśliwiec   schedule 24.02.2018