从反应组件状态POST到mongoDB失败

时间:2018-05-04 06:49:02

标签: javascript node.js mongodb reactjs axios

当我单击提交按钮时,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,我的导师看一看,我们很难过。

谢谢你看看。

1 个答案:

答案 0 :(得分:0)

@hurricane建议我查看开发者控制台中的网络选项卡并检查POST消息。我收到了副标题的验证错误,因为我将其设置为true。

确保您在模型中的字段上更改了验证,因此如果您将该字段留空,则不会抛出该错误并且无法POST到数据库。