MongoDB не получает запрос на удаление

#node.js #reactjs #mongodb

Вопрос:

клиент:

  const handleDelete = (id) => {
    console.log(id);
    axios.delete(`http://localhost:3001/delete`, {id})
      .then(res => console.log(err)})
      .catch(err => console.log(err))
  }
 

КОНСОЛЬ правильно РЕГИСТРИРУЕТ ИДЕНТИФИКАТОР: vv17OZpdGkMwNEv0

сервер:

 cartRoutes.route("/delete").delete((req, res) => {
  console.log(req.body);
  let db_connect = dbo.getDb("cart");
  let myquery = { id: req.body.id };
  db_connect.collection("cart").deleteOne(myquery, function (err, obj) {
    if (err) throw err;
    // console.log("1 document deleted");
  });
});
 

КОНСОЛЬ ВЫХОДИТ ИЗ СИСТЕМЫ {}

Это в основном скопировано из документа MongoDB, сервер(2-й блок кода) не распознает вызов от клиента. Я знаю, что код mongo работает, потому что, если я вручную введу идентификатор в переменную «myquery», элемент будет удален из базы данных, почему это так? В документе MongoDB он настроен так, как показано ниже, что я пробовал, и все равно req.body возвращает ‘{}’

Ответ №1:

Понял это, не уверен, что использование параметров-правильный способ/лучшая практика

Клиент

   const handleDelete = (e, id) => {
    e.preventDefault();
axios.delete(`http://localhost:3001/delete/${id}`)
      .then(res => console.log(res))
      .catch(err => console.log(err))
  }
 

Сервер

 cartRoutes.route("/delete/:id").delete((req, res) => {
  let db_connect = dbo.getDb("cart");
  let myquery = { id: res.req.params.id };
  db_connect.collection("cart").deleteOne(myquery, function (err, obj) {
    if (err) throw err;
    // console.log("1 document deleted");
  });
});
 

Комментарии:

1. Для удаления, включая идентификатор пользователя в pathparam , все в порядке.

2. Лучше попробуйте выполнить следующее, чтобы извлечь идентификатор пользователя из тела запроса. axios.delete(url, { data: { id: id } }); Для получения дополнительной информации: github.com/axios/axios/issues/897