MEAN стека тело запроса http.post пусто - PullRequest
0 голосов
/ 22 марта 2020

Я создаю проект в среднем стеке и столкнулся со следующей проблемой.

Когда я пытаюсь загрузить что-то в свою базу данных, запрос http.post не работает из-за тела запроса пуст, поэтому я получил ValidationError в mon goose для необходимых параметров, но не получил.

Итак, сначала я использую 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

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
        }
      });
    });
  }
);

Когда я console.log здесь req.body, я получаю пустой объект, но он просто работает нормально, когда я conole.log его во внешнем интерфейсе в сервисе. TS файл.

Что может вызвать эту проблему?

1 Ответ

0 голосов
/ 24 марта 2020

Публикация данных в виде JSON объектов вместо отправки их в виде объектов FormData.

...