[英]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.