PUT запрос от React до mongodb с Axios - PullRequest
1 голос
/ 09 мая 2019

Мне нужна небольшая помощь.Запрос PUT не работает, когда я отправляю его из приложения React с помощью Axios.Но когда я тестирую PUT api от Postman - он работает как положено.Сторона сервера - узел + mongoose + mongodb.

modifyCurrentHaspInfo = (e) => { 
      if (prompt("Enter password:") === "123456") {
        axios.put("/hasp/change", {
          data: {
            _id: "5cd40f6f1e922c236caa82f4",
            serial: "11111-22222",
            soft: "test-put"
            }            
          })
        .then((res) => {
          console.log(res.data);      
        })
        .catch((err) => {
          console.log(err);
        })
      } else {
        alert("Wrong password!");
      }         
   }

Когда он находит правильный идентификатор - данные в теле должны быть изменены.Вот код с сервера:

//PUT request
app.put("/hasp/change", function(req, res) {
    //console.log(req.body);
    HaspInfo.findOneAndUpdate({_id: req.body._id}, {$set:req.body}, {new: true}, function(err, hasps) {
        if (err) {
            res.status(500).send({error: "Could not modify hasp info..."});
        } else {           
           //console.log(hasps);
           res.status(200).send(hasps);
        }
    }); 
    });

1 Ответ

0 голосов
/ 09 мая 2019

Это потому, что ваш аксиос неправильно сформирован (не то, что вы ожидаете от бэкэнда).

Способ отправки данных из Axios теперь доступен на бэкэнде как

req.body.data

// which will be an object like
{
  _id: "5cd40f6f1e922c236caa82f4",
  serial: "11111-22222",
  soft: "test-put"
}

Так что _id можно получить как req.body.data._id. Измените ваш запрос на один из следующих (обратите внимание на различия)

axios.put("/hasp/change", {
  _id: "5cd40f6f1e922c236caa82f4",
  serial: "11111-22222",
  soft: "test-put"
})

Или

axios.put({
  url: "/hasp/change",
  data: {
    _id: "5cd40f6f1e922c236caa82f4",
    serial: "11111-22222",
    soft: "test-put"
  }            
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...