Почтальон Form-Data и x- www-form-encoded возвращают нулевые данные - PullRequest
0 голосов
/ 17 апреля 2020

Когда I POST с Content_Type установленным в raw / JSON, ответ не является нулевым. Но когда я пытаюсь POST данные с Content_Type, установленным в form-data, ответ возвращается как нулевой. Как я могу решить эту проблему?

Скриншот почтальона с FormData

Но когда я пытаюсь использовать необработанные данные / JSON, все нормально:

Скриншот почтальона с JSON Данные

Для необработанных данных мой тип контента:

multipart/form-data; boundary=<calculated when request is sent>

и мои настройки cors:

app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
  if (req.method === "OPTIONS") {
    res.header("Access-Control-Allow-Methods", "PUT, POST, PATCH, DELETE, GET");
    return res.status(200).json({});
  }
  next();
});

и мой почтовый роутер вот так:

router.post("/", upload.single("productImage"), (req, res, next) => {
  console.log(req.file);
  Category.findById(req.body.categoryID)
    .then((category) => {
      if (!category) {
        return res.status(404).json({
          message: "Category not found",
          category: category,
        });
      }

      //
      const product = new Product({
        _id: new mongoose.Types.ObjectId(),
        name: req.body.name,
        price: req.body.price,
        quantity: req.body.quantity,
        category: req.body.categoryID,
      });
      return product.save();
    })
    .then((result) => {
      console.log(result);
      res.status(201).json({
        message: "Object created succesfully",
        product: {
          id: result._id,
          name: result.name,
          price: result.price,
          quantity: result.quantity,
          category: result.category,
        },
      });
    })
    .catch((err) => {
      console.log(err), res.status(500).json({ error: err });
    });
});

Ошибка:

UnhandledPromiseRejectionWarning: Error
[ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the
 client

Как мне это решить?

1 Ответ

0 голосов
/ 17 апреля 2020

Вы пишете переменную неправильно в примере с данными формы: Правильный путь categoryID не category .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...