首页 文章

如何处理nestjs中的typeorm实体字段唯一验证错误?

提问于
浏览
0

我在typeORM实体字段电子邮件中设置了自定义唯一验证器装饰器 . Nestjs有依赖注入,但服务没有注入 .

错误是:TypeError:无法读取undefined的属性'findByEmail'

有关实施自定义电子邮件验证器的任何帮助?

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崩溃我的应用程序,所以我自己无法处理它...

Thankx!

1 回答

  • 1

    我修改了我的代码 . 我正在检查用户服务(而不是自定义验证器)中用户名/电子邮件的唯一性,并在用户已插入数据库时返回HttpExcetion .

相关问题