【发布时间】:2021-08-25 06:56:33
【问题描述】:
有一个nest.js 项目,在请求正文中我们期望一个对象,该对象的一个属性包含字符串化的JSON 值。想法是将此字符串转换为对象,对其进行验证并作为对象传递给控制器 ValidationPipe 设置:
app.useGlobalPipes(
new ValidationPipe({
whitelist: true,
transform: true,
}),
);
DTO:
@Transform(parseJson, { toClassOnly: true })
@Type(() => AdditionalInfo)
@IsNotEmptyObject()
@ValidateNested()
additionalInfo: AdditionalInfo;
parseJson 函数
export function parseJson(options: {
key: string;
value: string;
obj: string | Record<string, any>;
}): Record<string, any> {
try {
return JSON.parse(options.value);
} catch (e) {
throw new BadRequestException(`${options.key} contains invalid JSON `);
}
}
由于某些原因,在控制器中解析的值丢失了,我们收到了一个空对象。
【问题讨论】:
-
向我们提供您传递给您的路线的数据,这些数据也将得到验证。