【问题标题】:POST to mongoDB from react component state failing从反应组件状态失败 POST 到 mongoDB
【发布时间】:2018-05-04 06:49:01
【问题描述】:

当我单击提交按钮时,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)。

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

感谢观看。

【问题讨论】:

  • 它们是否像前端(react 端)和后端(express 和 mongo)一样分开?
  • 是分离的应用结构。
  • 我删除了我不相关的评论。我做了一些研究,并认为问题可能出在book_image 字段名上。根据this,名字中间不能有_。因此,也许可以尝试将该字段名称更改为其他名称,看看它是否能解决您的问题。
  • 你能打开开发者控制台和网络部分吗?请向我们发送请求和响应 /api/books
  • 我尝试在不带 _ 的情况下重命名,但仍然出现 api 错误,谢谢。

标签: javascript node.js mongodb reactjs axios


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-08-12
    • 1970-01-01
    • 2018-07-01
    • 2019-08-30
    • 2020-05-31
    • 2019-12-15
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    相关资源
    最近更新 更多