如果为假则转换值
transform value if falsy
我正在使用 class-validator 包验证我的 DTO。我通过
启用了转换
app.useGlobalPipes(
new ValidationPipe({
transform: true,
}),
);
在我的 main.ts 文件中,如文档中所述
https://docs.nestjs.com/techniques/validation#transform-payload-objects
我的 DTO 中有一个可选的配置字段。如果该字段不存在,则应将其转换为空对象。此处描述了转换装饰器
https://docs.nestjs.com/techniques/serialization#transform
我希望提出这个解决方案:
export class MyDTO {
@IsObject()
@IsOptional()
@Transform(configuration => configuration || {})
public configuration: object;
}
当我调用 API 路线时
@Post()
public create(@Body() myDTO: MyDTO): void {
console.log(myDTO);
}
主体为空,因此没有字段 configuration
我的 MyDTO
实例是
{}
虽然我希望它是
{
configuration: {}
}
有什么问题或我错过了什么?我试图调试代码,但它从未命中转换函数。所以 @Transform
不会触发。
更新
看来我必须这样做
@IsObject()
@IsOptional()
@Transform(configuration => configuration || {}) // will be used if the field exists
public configuration: object = {}; // will be used if the field doesn't exist
如果传入空体,将使用初始值。仅当您传入字段但为其分配 null
之类的值时,转换才会运行。
继续前进 n 也把它放在这里:为什么不让 typescript 通过设置像
这样的值来管理默认值
export class MyDTO {
@IsObject()
@IsOptional()
public configuration: object = {};
}
那样的话,如果你得到一个值,很好,如果它不存在,class-transform 会把正确的值放在那里。
我正在使用 class-validator 包验证我的 DTO。我通过
启用了转换app.useGlobalPipes(
new ValidationPipe({
transform: true,
}),
);
在我的 main.ts 文件中,如文档中所述
https://docs.nestjs.com/techniques/validation#transform-payload-objects
我的 DTO 中有一个可选的配置字段。如果该字段不存在,则应将其转换为空对象。此处描述了转换装饰器
https://docs.nestjs.com/techniques/serialization#transform
我希望提出这个解决方案:
export class MyDTO {
@IsObject()
@IsOptional()
@Transform(configuration => configuration || {})
public configuration: object;
}
当我调用 API 路线时
@Post()
public create(@Body() myDTO: MyDTO): void {
console.log(myDTO);
}
主体为空,因此没有字段 configuration
我的 MyDTO
实例是
{}
虽然我希望它是
{
configuration: {}
}
有什么问题或我错过了什么?我试图调试代码,但它从未命中转换函数。所以 @Transform
不会触发。
更新
看来我必须这样做
@IsObject()
@IsOptional()
@Transform(configuration => configuration || {}) // will be used if the field exists
public configuration: object = {}; // will be used if the field doesn't exist
如果传入空体,将使用初始值。仅当您传入字段但为其分配 null
之类的值时,转换才会运行。
继续前进 n 也把它放在这里:为什么不让 typescript 通过设置像
这样的值来管理默认值export class MyDTO {
@IsObject()
@IsOptional()
public configuration: object = {};
}
那样的话,如果你得到一个值,很好,如果它不存在,class-transform 会把正确的值放在那里。