首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >验证管道与类验证器的使用

验证管道与类验证器的使用
EN

Stack Overflow用户
提问于 2018-07-26 23:55:29
回答 1查看 4.6K关注 0票数 2

我试图弄清楚如何在API调用中正确地使用我的验证管道和类验证器。

我有一个DTO与类验证器装饰,这是行为如预期的。但是,我想利用“skipMissingProperties”来忽略对不存在的东西的验证(例如,屏幕截图中的“名称”)。

我的意图是能够拥有一个简单的DTO,它使用了许多装饰器,并且跳过了那些不存在的DTO的验证。

不幸的是,我对skipMissingProperties的使用似乎不正确,因为提供此选项仍然会引发DTO内部的验证错误。

如何将验证管道skipMissingProperties选项与类验证器装饰器一起使用?

使用下面的代码,如果我使用其他参数发出更新请求,但将“name”排除在主体之外,类验证器将从DTO级别抛出错误。

控制器屏幕上的验证管道

UpdateViewDTO的装潢师截图

API控制器终结点:

代码语言:javascript
运行
复制
    @Put(':viewId')
    public async updateView(
        @Req() request: RequestExtended,
        @Param('viewId') viewId: string,
        @Body(new ValidationPipe({ skipMissingProperties: true })) updateView: UpdateViewDto)
        : Promise<View> {

        // Do some API stuff    

       }

UpdateViewDTO:

代码语言:javascript
运行
复制
export class UpdateViewDto {
    @IsString()
    @MinLength(1, {
        message: LanguageElements.VIEW_NAME_REQUIRED_ERROR_MSG,
    })
    @MaxLength(50, {
        message: LanguageElements.VIEW_NAME_TOO_LONG_ERROR_MSG,
    })
    public readonly name?: string;

    // Other properties 
}
EN

回答 1

Stack Overflow用户

发布于 2019-12-13 19:31:56

main.ts中,可以将skipMissingProperties: true直接添加到ValidationPipe中。

代码语言:javascript
运行
复制
  app.useGlobalPipes(
    new ValidationPipe({
      skipMissingProperties: true,
      exceptionFactory: (errors: ValidationError[]) => {
        return new BadRequestException(errors[0].constraints);
      },
    }),
  );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51548984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档