Я получаю сообщение об ошибке, когда публикую в своем маршруте 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.info(newForm);
API.addForm(newForm)
.then(response => {
console.info(response)
})
}
// =============== API =========== //
addForm: function(form) {
return axios.post("/api/form", + form);
},
В журнале console.info на стороне клиента выводится правильный объект со всеми соответствующими значениями в объекте, но когда он попадает на внутренний сервер, тело POST возвращает {NaN: ""} выдает ошибку UnhandledPromiseRejectionWarning: ошибка проверки И ответ не выполняется
вот маршрут 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.info("addForm Function")
console.info("===================== = ")
console.info(req.body)
db.Form.create(req.body)
.then(form => {
console.info(form)
return db.User.findOneAndUpdate({ _id: req.body.id }, { form: form._id }, { new:true });
})
.then(userInfo => {
res.json(userInfo);
})
}
это параметр формы, когда я отправляю объект newForm в маршрут addForm
А почему именно +
? какая-то конкретная причина?
не конкретно Это был пример, который я взял из старого репозитория классов, я могу попытаться удалить его и посмотреть, работает ли это
В вашей функции addForm второй параметр axios.post - это объект, и вам не нужен +, поэтому удалите +
addForm: function(form) {
return axios.post("/api/form", form);
}
Оператор + переводит объект form
в число. Поскольку объект не может быть преобразован в число разумным образом, он вернет NaN
(а не число). Следующее должно решить эту проблему:
addForm: function(form) {
return axios.post("/api/form", form);
}
Вот пример происхождения NaN
:
let obj = {prop1: 1};
let nonSensicalNumber = +obj;
console.info(nonSensicalNumber);
да, спасибо, что имеет смысл, только начал изучать разработку 6 месяцев назад, пытаясь избавиться от привычки к этим крошечным ошибкам
Рад слышать!! поймите, что если вы поставите плюс перед любым выражением, JS преобразует его в число. Не забывайте, что javascript имеет разные типы данных (string, int, boolean) только потому, что вам не нужно объявлять их, что они все еще присутствуют и могут вызвать ошибки, если вы не знаете, как они себя ведут.
Что должен делать
+form
?