1.我正在使用axios(NestJs应用程序)访问外部API。
1.我指定了响应类型(假设为ResponseDto
)
1.当我从axios(response.data)获取数据时,它是一个简单的纯JS对象。因此,我不能使用我在ResponseDto
类中定义的任何函数。因此,我得到错误TypeError: response.data.isValid is not a function
。
响应类别:
import { InfoDto } from './info.dto';
import { Type } from 'class-transformer';
export class ResponseDto {
@Type(() => InfoDto)
private infos: InfoDto[];
isValid(): boolean {
return this.infos.length > 0;
}
}
信息DTO
export class InfoDto {
private readonly message: string;
isMessageEmpty(): boolean {
return !this.message;
}
}
API调用
this.httpService.axiosRef
.post<ResponseDto>(apiUrl, request, {
headers: headers,
})
.then((response) => response.data);
我希望response.data的类型是ResponseDto,但它是一个Object。
Object {
"infos": Array(1)[
Object {
"message": "message"
}
]
}
我想要的
ResponseDto {
"infos": Array(1)[
InfoDto {
"message": "message"
}
]
}
1条答案
按热度按时间zrfyljdw1#
您需要使用类似
class-transformer
的东西将JSON对象放入类示例中,或者通过示例化新类并分配属性来手动完成。这些也可以组合成相同的
then
,只是为了示例的目的将它们分开。