Axios react 节点 post 请求给出了 422(不可处理的实体)

时间:2021-04-23 23:56:37

标签: node.js reactjs mongodb axios

当我按下保存的按钮时,我正在尝试将所需的书保存到我的 MongoDB 数据库中 我收到 422 错误 我将数据作为对象传递,但由于某种原因,数据没有出现在响应中服务端数据正在传递给Axios调用但是由于某种原因,data属性总是返回一个空对象,

保存处理程序


const handleSave = (event) => {
    event.preventDefault();

    let save = books.filter((book) => book.id === event.target.id);
    // console.log(save);
    // const da/ta = ;

    // console.log(data);
    API.saveBook({
      title: save[0].title,
      authors: save[0].author,
      description: save[0].description,
      image: save[0].image,
    })
      .then((res) => {
        alert("book saved");
        console.log(res);
        // console.log(data);
      })
      .catch((err) => {
        // console.log(data);
        console.log("book not saved");
        console.log(err.response);
      });
  };

这是书本模型和heroku链接,您可以在其中看到正在注销的内容

const bookSchema = new Schema({
    title: { type: String, required: true },
    authors: [{ type: String, required: true }],
    description: { type: String, required: true },
    image: { type: String },
    date: { type: Date, default: Date.now },
});


Heroku Link
github

我的检查中有 console.logs,因此您可以查看这些日志以查看我返回的响应

2 个答案:

答案 0 :(得分:1)

我已经克隆了这个存储库并在您的 Heroku 链接和本地上进行了测试,并且无法在本地重新创建错误。我怀疑与 MongoDB 服务器有关而不是代码问题。我建议您使用替代方法在实时/Heroku 附加 MongoDB 服务器中测试创建记录。

谢谢, 威尔·沃尔什

答案 1 :(得分:1)

对于某些书籍,volumeInfo.description 似乎是 undefined。 API 返回 422 错误,因为 description 是必需的,但它不存在于请求负载中。如果书没有描述,您可以传递默认描述。

result = {
  // ...
  title: result.volumeInfo.title,
  description: result.volumeInfo.description || "This book doesn't have a description",
  // ...
}

或者,如果没有问题,您可以删除 required 字段的 description 验证。


为了清楚起见,我建议您将 author 对象中的 authors 重命名为 result

result = {
  // ...
  authors: result.volumeInfo.authors,
  // ...
}