乐闻世界logo
搜索文章和话题

如何在 nestjs 中设置 class - validator 的自定义错误消息?

4 个月前提问
4 个月前修改
浏览次数35

1个答案

1

在NestJS中使用类验证器(class-validator)设置自定义错误消息时,可以通过传递选项对象来自定义IsEnum验证器的错误消息。这里是一个具体的例子,展示如何实现此功能:

首先,确保您的项目已经安装了class-validatorclass-transformer这两个库。如果没有安装,可以通过以下命令安装:

bash
npm install class-validator class-transformer

然后,在您的 DTO(数据传输对象)中,您需要定义一个枚举类型和使用这个枚举类型的字段,如下所示:

typescript
import { IsEnum } from 'class-validator'; enum UserRole { Admin = 'admin', Editor = 'editor', Subscriber = 'subscriber' } export class CreateUserDto { @IsEnum(UserRole, { message: 'role 必须是以下值之一: $constraint1' }) role: UserRole; }

在上面的代码中,我们定义了一个名为UserRole的枚举,它包含三个可能的角色。在CreateUserDto类中,role字段被注解为@IsEnum。在IsEnum装饰器中,我们传递了一个配置对象,其中message属性被设置为自定义的错误消息。$constraint1是一个特殊的占位符,它在错误消息中会被替换为IsEnum装饰器接收的UserRole枚举的允许值。

当尝试创建一个CreateUserDto实例且role字段的值不在UserRole枚举中时,将会抛出一个验证错误,错误消息将是我们自定义的消息。

这种方式提供了一种灵活的方法来反馈更具体的错误信息,帮助开发者和最终用户更好地理解数据验证失败的具体原因。

2024年7月24日 10:00 回复

你的答案