gpt4 book ai didi

javascript - 为什么白名单不会因错误的模型 NestJs 而出错

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:43 24 4
gpt4 key购买 nike

我想在路由的主体验证中使用白名单。我希望只接受确认我的模型的数据,如果发送的某些参数不属于我的模型 DTO,则必须抛出错误。

这是我的 DTO:

export class RegisterDTO {
@MinLength(5)
userName: string;

@MinLength(8)
password: string;

@IsNotEmpty()
seller: boolean;

address: {
city: string;
street: string;
apartment?: string;
};
}

这是我的 Controller :

@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,
}),
)

关于javascript - 为什么白名单不会因错误的模型 NestJs 而出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55414165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com