【发布时间】:2020-03-24 22:33:40
【问题描述】:
我正在平均堆栈中创建一个项目,但遇到了以下问题。
当我尝试将某些内容上传到我的数据库时,由于请求正文为空,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(["/"]);
});
}
然后转到后端properties.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 时,我会得到一个空对象,但是当我将它 conole.log 到 service.ts 文件的前端时,它工作得很好。
什么可能导致这个问题?
【问题讨论】:
-
尝试将帖子数据作为 JSON 对象发送。
-
使用 JSON.stringify?
-
不,我的意思是,不要发送 FormData 对象,而是将其作为 JSON 发送并尝试。
-
是的,现在可以使用了,谢谢!
-
很好,你可以接受它作为答案。
标签: node.js angular mongodb express mean-stack