首页 > 解决方案 > 从反应组件状态失败 POST 到 mongoDB

问题描述

当我单击提交按钮时,onClick 事件应该使用 Mongoose 将在反应页面状态中设置的数据发布到 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 (Unprocessable Entity)。

我一直在研究尝试不同的东西,有两个 TA 和我的导师看了一下,我们被难住了。

谢谢参观。

标签: javascriptnode.jsmongodbreactjsaxios

解决方案


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

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


推荐阅读