繁体   English   中英

如果验证失败,如何设置回退值(NestJS,类验证器)

[英]How to set fallback value if validation fails (NestJS, class-validator)

我有一个类似于下面描述的Person类。 languages是一个可选属性。 它可能丢失或无效。 如果languages丢失或无效,我不希望 post 调用失败。 相反,我想将languages设置为后备值,例如["en"]

我该怎么做?

我已经研究过自定义验证器,但这似乎不合适,因为我既想运行所有验证,又想在验证失败时更改对象。

// interface
import { IsString, MinLength, IsNotEmpty } from 'class-validator';

class Person {
  @IsNotEmpty()
  public readonly name: string;

  @IsArray()
  @IsString({ each: true })
  @MinLength(1)
  public languages: string[];  // <-- how would I specify a fallback value?
}
// controller
import { Body, Controller, Post } from "@nestjs/common";

@Controller("signup")
export class SignupController {
   @Post()
   public async submit(@Body() formData: Person) {
      // create the user object and save it to the db
   }

}

我最终像这样使用@Transform

import { Transform } from "class-transformer";
import { IsOptional } from 'class-validator';

class Person {
    @IsOptional()
    @Transform(({ value }) => {
        if (/* test for value validity */) {
            return value as string[];
        }
        return fallbackLanguages;
    })
    public languages: string[];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM