下面我们可以创建一个跟这个 UserNotExistValidator 验证器对应的验证装饰器,在这个类的下面,export 一个装饰器,名字是 UserNotExist,它的值是一个函数,有个 options? 参数,类型是 ValidationOptions。函数返回一个函数,有个 object 参数,类型是 Object,还有一个 propertyName 参数,类型是 string。
执行一下 registerDecorator 注册一个装饰器,提供一个选项参数,设置一下 target,表示验证的目标,这里就是 object.constructor ,再设置一下 propertyName,值是 propertyName,再添加一个 options,值是 options,然后可以再用一个 validator ,值是 UserNotExistValidator 。
使用验证装饰器
下面试一下这个验证装饰器,打开 CreateUserDto,去掉 name 属性上用的这个 @Validate 装饰器,换成一个 UserNotExist 装饰器,这个装饰器会使用 UserNotExistValidator 验证 name 这个属性的值。最后把不再需要的这些导入删除掉。
测试
在 Http 客户端,重新发送一下创建用户请求,这里仍然会显示用户已存在这条错误信息。