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);
当我 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);