我目前正在以这种形式收到服务器的回复。
{
plateNumber: string;
vehicleId: number;
garage: {
garageName: string;
};
vehicleType: {
vehicleType: string;
};
vehicleStatus: {
status: string;
};
vehicleModel: {
vehicleModelName: string;
};
vehicleOwner: {
ownerName: string;
};
contactPhone: number;
techInspectDueDate: Date;
additionalInfo: string;
lastDriver: string;
}
,但只想获取属性(字段)。只是字符串和数字。
{
plateNumber: string;
vehicleId: number;
garageName: string;
vehicleType: string;
status: string;
vehicleModelName: string;
ownerName: string;
contactPhone: number;
techInspectDueDate: Date;
additionalInfo: string;
lastDriver: string;
}
当前,我正在使用HTTP后响应从服务器获取对象。
getVehicles(): Observable<Vehicle[]> {
const url = `${this.serviceUrl}`;
return this.http.post<Vehicle[]>(url, {} );
}
我需要在检查对象是否具有这些特定字段(车辆类型,状态,车辆模型名称,所有者名称,车库名称)时映射响应。 当我不确定对象是否具有这些字段或它是否已经是我需要的值(例如plateNumber)时,如何映射响应?
答案 0 :(得分:1)
使用地图并返回您想要的任何内容。
getVehicles(): Observable<Vehicle[]> {
const url = `${this.serviceUrl}`;
return this.http.post<Vehicle[]>(url, {}).pipe(
map(vehicles => vehicles.map(vehicle => {
return {
plateNumber: vehicle.plateNumber;
vehicleId: vehicle.vehicleId;
garageName: vehicle.garage.garageName;
//...map all other fields manually
};
})),
);
}
答案 1 :(得分:0)
您可能需要考虑以下解决方案
getVehicles().pipe(
map(vehiclesArray => vehiclesArray.map(vehicle => getProperties(vehicle))
)
)
其中getProperties
是您必须编写的方法,该方法返回要拥有的对象。
考虑到map
的第一个出现是RxJS提供的可管道运算符,而第二个是Array的方法。
在找不到所需属性的情况下,还必须确定行为方式。