javascript - 为什么白名单不会出现错误模型 NestJs 的错误
问题描述
我想在路线的正文验证中使用白名单。我希望只接受确认我的模型的数据,并且如果发送了一些不属于我的模型 DTO 的参数,则必须抛出错误。
这是我的 DTO:
export class RegisterDTO {
@MinLength(5)
userName: string;
@MinLength(8)
password: string;
@IsNotEmpty()
seller: boolean;
address: {
city: string;
street: string;
apartment?: string;
};
}
这是我的控制器:
@Post('register')
@UsePipes(new ValidationPipe({ transform: true, whitelist: true}))
async register(@Body() userDTO: RegisterDTO) {
const user = await this.userService.create(userDTO);
const payload: Payload = {
userName: user.userName,
seller: user.seller,
};
const token = await this.authService.signPayload(payload);
return {user, token};
}
但是当我发送此数据时,我没有收到错误消息:
{
"userName": "userdasdnasdasdadad",
"password": "passwdasdasdasadasdasda",
"address": {
"city": "kiev",
"street": "amosova"
},
"seller": false,
"test": "test"
}
"test": "test" 不能作为参数;我希望抛出一个错误,但没有
解决方案
该选项whitelist
仅在将 json 转换为您的 dto 类而不引发错误时去除未知值,因此在您的情况下,该属性test
被静默删除。
如果要在遇到未知属性时抛出验证错误,则需要添加选项forbidNonWhitelisted
:
@UsePipes(
new ValidationPipe({
transform: true,
whitelist: true,
forbidNonWhitelisted: true,
}),
)
推荐阅读
- java - java.lang.UnsupportedOperationException: JsonObject - 不知道为什么
- javascript - 在本机反应中将数据从数组绑定到 TextInput
- java - 是否可以编写一个算法,采用二叉树 T 并返回一个表示 T 高度的整数值
- c - 如何在 c 中使用 bsearch 在结构中搜索数组
- python-3.x - Python如何区分参数是否为默认参数?
- reactjs - 切换组件不更新视图
- c# - 将资源添加到 Xamarin.Forms NuGet
- r - 为什么在批量调用中将路径写入我的ui
- php - 如何通过 PHP 中的 URL 更新数据库中的数据
- flutter - 升级到 Android X 后的 Firebase 问题