Req.body returns { NaN: " " } 在服务器 console.log 中传递 object 到 API POST 路由

Req.body returns { NaN: " " } in server console.log when passing object to API POST route

当我 post 到我的 API 路由以在我的 collection 中创建文档时出现错误。数据是用户信息 post 数据库

这是提交的表格:

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 打印出正确的 object 以及 object 中所有适当的值,但是当它到达后端服务器时 POST 正文 returns {NaN: ""} 抛出UnhandledPromiseRejectionWarning: validation error And response fails

的错误

这里是后端API路线:

// ======== 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);
        })
    }

在你的 addForm 函数中 axios.post 第二个参数是一个对象,你不需要 + 那里所以删除 +

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

+ 运算符将 form 对象强制转换为数字。由于无法以有意义的方式将对象转换为数字,因此它将 return NaN (不是数字)。以下应该可以解决它:

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

这是 NaN 来源的示例:

let obj = {prop1: 1};

let nonSensicalNumber = +obj;

console.log(nonSensicalNumber);