Запрос на удаление работает, но не удаляется из базы данных - PullRequest
1 голос
/ 14 февраля 2020

когда я пытаюсь удалить элемент с помощью FindByIdAndDelete, он ничего не удаляет. когда я делаю запрос на удаление в почтальоне, я не получаю никаких ошибок, только элемент в БД. происходит то же самое с моим запросом пут.

это мой код:

router.delete("/", (req, res) => {
  Appointment.find({}, (err, data) => {
    if (err) {
      return res.status(500).json();
    } else {
      return res.json(data);
    }
  });
});

router.delete("/:id", (req, res) => {
  const id = req.params.id;

  Appointment.findByIdAndDelete(id, (err, data) => {
    if (err) {
      return res.status(500).json();
    } else {
      return res.json(data);
    }
  });
});

это тело, которое я вставил в свой запрос:

{
"id": "5e3ef4950e1b4027201e73bf"
}

что я делаю неправильно

1 Ответ

1 голос
/ 14 февраля 2020

findByIdAndDelete не выдает исключение, когда не находит документ для удаления. Вы должны проверить, являются ли данные нулевыми или нет.

Также ваш первый маршрут должен быть GET-маршрутом вместо DELETE.

router.get("/", (req, res) => {
  Appointment.find({}, (err, data) => {
    if (err) {
      return res.status(500).json();
    } else {
      return res.json(data);
    }
  });
});

router.delete("/:id", (req, res) => {
  const id = req.params.id;

  Appointment.findByIdAndDelete(id, (err, data) => {
    if (err) {
      return res.status(500).json();
    } else {
      if (data) {
        return res.json(data);
      } else {
        return res.status(400).send("Document not found, check id");
      }
    }
  });
});
...