Req.body возвращает {NaN: ""} в server console.log при передаче объекта в маршрут API POST - PullRequest
0 голосов
/ 13 октября 2018

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

, вот форма отправки:

handleFormSubmit = (event) => {
    event.preventDefault();
    const userId = localStorage.getItem("userId")
    const newForm = {
      id: userId,
      title: this.state.title,
      main: this.state.main,
      summary: this.state.summary
    };
    console.log(newForm);
    API.addForm(newForm)
    .then(response => {
      console.log(response)
    })
  }
  
  // =============== API =========== //
  
  addForm: function(form) {
        return axios.post("/api/form", + form);
    },

На клиентской стороне console.log выводит правильный объект со всеми соответствующими значениями в объекте, но когда он попадает на внутренний сервер, тело POST возвращает {NaN: ""} выдает ошибку UnhandledPromiseRejectionWarning: ошибка проверки, и ответ завершается неудачно

вот внутренний интерфейс API Route:

// ======== Index.js for API ======= // 

router.use("/api",require("./apiRoutes.js")(passport));

// ============== apiRoutes.js ============= //

router.route("/form")
	.post(formController.addRecipe);
  
 // ============= Controller ============ //
 
 addForm: function(req, res) {
        console.log("addForm Function")
        console.log("======================")
        console.log(req.body)
        db.Form.create(req.body)
        .then(form => {
            console.log(form)
            return db.User.findOneAndUpdate({ _id: req.body.id }, { form: form._id }, { new:true });
        })
        .then(userInfo => {
            res.json(userInfo);
        })
    }

Любая помощь будет оценена еще раз спасибо, ребята!

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Оператор + приводит объект form к числу.Поскольку объект не может быть преобразован в число способом, который имеет смысл, он вернет NaN (не число).Это должно решить следующее:

addForm: function(form) {
    return axios.post("/api/form", form);
 }

Вот пример того, откуда взято NaN:

let obj = {prop1: 1};

let nonSensicalNumber = +obj;

console.log(nonSensicalNumber);
0 голосов
/ 13 октября 2018

В вашей функции addForm axios.post вторым параметром является объект, и вам не нужно + там, поэтому удалите +

addForm: function(form) {
    return axios.post("/api/form", form);
 }
...