【问题标题】:MEAN stack http.post request body is emptyMEAN 堆栈 http.post 请求正文为空
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2016-01-29
    • 2015-04-03
    • 2015-08-16
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多