MEAN堆栈http.post请求正文为空



我正在mean stack中创建一个项目,遇到了以下问题。

当我试图上传一些东西到我的数据库时,http.post请求不起作用,因为请求体是空的,因此我在mongoose中得到了一个ValidationError,用于它应该得到的所需参数,但没有得到。

因此,首先我使用了一个service.ts,在这里我给出了从html文件中的表单中获得的参数。我使用的是反应式表单和FormData对象。

addProp(address: string, type: string, size: number, condition: string, year: number,
numberOfRooms: number, moveableFrom: string, furnitured: boolean, garden: boolean, attic: boolean, pet: boolean,
smoke: boolean, heatingType: string, elevator: boolean, level: number) {

const propData = new FormData();
propData.append("address", address);
propData.append("type", type);
propData.append("condition", condition);
propData.append("year", year as unknown as string);
propData.append("numberOfRooms", numberOfRooms as unknown as string);
propData.append("moveableFrom", moveableFrom);
propData.append("furnitured", furnitured as unknown as string);
propData.append("garden", garden as unknown as string);
propData.append("attic", attic as unknown as string);
propData.append("pet", pet as unknown as string);
propData.append("smoke", smoke as unknown as string);
propData.append("heatingType", heatingType as unknown as string);
propData.append("size", size as unknown as string);
propData.append("elevator", elevator as unknown as string);
propData.append("level", level as unknown as string);
this.http
.post<{ message: string; prop: Property }>(
"http://localhost:3000/api/props",
propData
)
.subscribe(responseData => {
this.router.navigate(["/"]);
});
}

然后它转到后端属性.js 中的post请求

router.post(
"",
req => {
const prop = new Property({
address: req.body.address,
type: req.body.type,
size: req.body.size,
condition: req.body.condition,
year: req.body.year,
moveableFrom: req.body.moveableFrom,
numberOfRooms: req.body.numberOfRooms,
furnitured: req.body.furnitured,
elevator: req.body.elevator,
level: req.body.level,
garden: req.body.garden,
attic: req.body.attic,
pet: req.body.pet,
smoke: req.body.smoke
});
prop.save();.then(updatedProperty => {
res.status(201).json({
message: "Property added successfully",
prop: {
...updatedProperty,
id: updatedProperty._id
}
});
});
}
);

当我在这里控制台.log req.body时,我会得到一个空对象,但当我在service.ts文件的前端控制台.log它时,它工作得很好。

是什么原因导致了这个问题?

将数据作为JSON对象发布,而不是作为FormData对象发送。

最新更新