что мне не хватает? использование axios для выполнения запроса на удаление, устранение неполадок с помощью req.params.id с использованием mongodb в качестве bakcend - PullRequest
3 голосов
/ 17 октября 2019

Я пытаюсь выполнить функцию, которая удаляет сообщение из локальной базы данных mongodb. Я проверил код с почтальоном, он работает, но во внешнем интерфейсе я использую Axios, и идентификатор необходимо передать в качестве параметра запроса, но я получаю ошибку. Мой код не может передать параметр id, но внутренний код выглядит нормально.

xhr.js: 166 УДАЛИТЬ http://localhost:3000/api/posts/?id=5da802aa8b54d7220f84110e 404 (Не найдено)

axios.delete('/api/posts/',{params:{id:'xyz'}})

хотя я проверял в почтальоне, вставив id (http://localhost:5000/api/posts/xyz_id) с запросом на удаление, и он работал.

///// backend

  delete(req, res, next){
     const postId = req.params.id;
     Post.findOneAndDelete({ _id:postId })
    .then(post => res.status(204).send(post))
    .catch(next);
 }

////// внешний интерфейс

  const deletePost =()=>{
   axios
  .delete('/api/posts/', { params:{ id:'5da802aa8b54d7220f84110e'}})
  .then(res => console.log('deleted'))
  .catch('err', err => console.log(err));
  };

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Второй аргумент запроса axios обычно используется для передачи req.body. В вашей логике backend вы пытаетесь использовать данные, доступные в req.params, которые должны быть переданы по маршруту в front-end . Попробуйте вместо этого:

const deletePost = () => {
   axios
  .delete(`/api/posts/${5da802aa8b54d7220f84110e}`) //you can swap the number with an actual variable
  .then(res => console.log('deleted'))
  .catch('err', err => console.log(err));
  };

Предполагается, что ваш маршрут API выглядит примерно так: app.delete("/api/posts/:id")

0 голосов
/ 17 октября 2019

Подтвердите, что вам не нужно предоставлять авторизацию в заголовках:

 const deletePost =()=>{
       axios
      .delete('/api/posts/:id', { params:{ id:'5da802aa8b54d7220f84110e'}})
      .then(res => console.log('deleted'))
      .catch('err', err => console.log(err));
      };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...