Невозможно установить заголовки после их отправки клиенту в Mongoose - PullRequest
0 голосов
/ 02 ноября 2019

Каждый раз, когда я удаляю свои заказы и пытаюсь получить их снова с тем же идентификатором, он возвращает правильный ответ, который (Заказ не найден), но в консоли возвращает ошибку

router.delete("/:orderID", (req, res, next) => {
  const id = req.params.orderID;
  Orders.deleteOne({ _id: id })
    .exec()
    .then(result => {
      if (!result) {
        res.status(404).json({
          message: "there is no such Order to Delete, Kindly Check Order ID",
          fetchAll: "http://localhost:3000/orders/"
        });
      }
      res.status(200).json({
        message: "Order Deleted Successfully",
        request: {
          type: "POST",
          url: "http://localhost:3000/orders/",
          body: {
            productID: "Id of the Product",
            quantity: "Total Quantity of the Product"
          }
        }
      });
    })
    .catch(err => {
      console.log(err);
      res.status(500).json({
        error: err
      });
    });
});

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

Вам необходимо вернуться после того, как вы отправили 404, в противном случае вы сначала отправляете 404, а затем 200. Поскольку код будет продолжать работать.

if (!result) {
  res.status(404).json({
    message: "there is no such Order to Delete, Kindly Check Order ID",
    fetchAll: "http://localhost:3000/orders/"
  });
  return;
}
0 голосов
/ 02 ноября 2019

Вы можете отправить ответ только один раз за вызов .

После отправки ответа вы не можете отправить другой ответ для «этого запроса» .

Здесь вы отправляете два ответа, один с 200 (сценарий успеха) и другой с 404. (сценарий ошибки).

Поскольку это два разных ответа для двух разных целей,

либо сохраните их в if else block, например, так:

    if (!result) {
        res.status(404).json({
          message: "there is no such Order to Delete, Kindly Check Order ID",
          fetchAll: "http://localhost:3000/orders/"
        });
    } else {
      res.status(200).json({
        message: "Order Deleted Successfully",
        request: {
          type: "POST",
          url: "http://localhost:3000/orders/",
          body: {
            productID: "Id of the Product",
            quantity: "Total Quantity of the Product"
          }
        }
      });
    } 

Или просто return, как показано в одном из ответов.

    if (!result) {
        res.status(404).json({
          message: "there is no such Order to Delete, Kindly Check Order ID",
          fetchAll: "http://localhost:3000/orders/"
        });

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