#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