当我单击提交按钮时,onClick事件应该使用Mongoose将在反应页面状态中设置的数据POST到mongodb。从console.logs检查它并在控制器中失败.create(req.body)并抛出我设置的错误状态422。
// onClick function
postBookDB = event => {
event.preventDefault();
if (this.state.title) {
API.donateBook({
isbn: this.state.isbn,
title: this.state.title,
subtitle: this.state.subtitle,
author: this.state.author,
desc: this.state.desc,
book_image: this.state.book_image,
pages: this.state.pages,
condition: null,
notes: null,
user: null
})
.catch(err => console.log(err));
}
};
// controller
create: function (req, res) {
console.log("in create function");
console.log(req.body);
db.Book
.create(req.body)
.then(dbModel => res.json(dbModel))
.catch(err => res.status(422).json(err));
},
// API.js
donateBook: function (bookData) {
console.log(bookData);
return axios.post("/api/books", bookData);
}
我在控制台中收到此错误:POST http://localhost:3000/api/books 422(不可处理的实体)。
我一直在研究尝试不同的东西,有两个TA,我的导师看一看,我们很难过。
谢谢你看看。
答案 0 :(得分:0)
@hurricane建议我查看开发者控制台中的网络选项卡并检查POST消息。我收到了副标题的验证错误,因为我将其设置为true。
确保您在模型中的字段上更改了验证,因此如果您将该字段留空,则不会抛出该错误并且无法POST到数据库。