发布请求不起作用,声称正文数据不存在

Posted

技术标签:

【中文标题】发布请求不起作用,声称正文数据不存在【英文标题】:post request not working, claims body data is not present when it is 【发布时间】:2021-08-29 20:29:31 【问题描述】:

我正在尝试用 prisma 中的新行更新我的表,但我似乎找不到问题所在。

我的帖子是这样的:

app.post(`/content`, async (req, res) => 
  const result = await prisma.content.create(
    data: 
      title: req.body.title,
      content: req.body.content,
    ,
  )
  res.json(result)
)

我的模型如下所示:

model content 
  id        Int      @id @default(autoincrement())
  title String
  content String

我这样称呼我的帖子:

createContent() 
  let identifier = this.content.length + 1
  let newContent =  data:  id: identifier, title: 'Sample tekst', content: "Sample tekst"  
  this.addContent(newContent.data)
      
  fetch('http://localhost:3000/api/content', 
    method: 'post',
    body: JSON.stringify(newContent)
  )

  .catch(error => 
    console.error('Error:', error)
  )

我尝试将id: req.body.id 添加到我帖子中的数据对象,但没有任何作用。

还尝试从 newContent 对象中删除 id,仍然是同样的错误。

我得到的错误是:

ERROR                                                                                                                                                       20:44:23
Invalid `prisma.content.create()` invocation:


  data: 
    id: undefined,
+   title: String,
+   content: String
  


Argument title for data.title is missing.
Argument content for data.content is missing.

Note: Lines with + are required

【问题讨论】:

在你的post方法中不应该是title: req.body.data.title吗? 试过了,现在我的控制台说:错误无法读取未定义的属性“标题”,不确定这是否是进度 首先,console.log() 不管request 你在app.post('/content', async (req, res) =>)... 进入req,我也可以在createContent() 中看到你正在设置一个id,但是你的primsa id 变量设置为 @default(autoincrement()),这意味着它是自动创建和递增的。请参阅'Defining attributes' 标签下的'Defining a default value' 中的this documentation。 控制台日志记录 req 的结果太大而无法分享,所以我制作了一个视频:loom.com/share/57bba533953149899852e925a3752245 我在 createContent 中使用的 id 没有被帖子使用,因为就像你说的那样,虽然没有必要我的商店需要它才能将新对象推送到数组中,这就是我添加它的原因。我尝试在我的帖子中添加 id 并从给定对象中删除 id 但似乎两者都没有产生差异,控制台中显示了相同的错误。 【参考方案1】:

我已经解决了这个问题。有两种方法可以解决此问题。

解决方案 1: 添加标题。

fetch('http://localhost:3000/api/content', 
  method: 'post',
  body: JSON.stringify(newContent),
  headers:  'Content-type': 'application/json; charset=UTF-8' 
)

解决方案 2:

npm i axios安装axios,像一个真人一样,然后导入它,然后你的帖子如下:

axios.post('http://localhost:3000/api/products', newProduct)
  .then((response) => 
  console.log(response)
)
  .catch((error) => 
  console.log(error);
)

【讨论】:

以上是关于发布请求不起作用,声称正文数据不存在的主要内容,如果未能解决你的问题,请参考以下文章

正如 Fusion Location Provider API 所声称的那样,位置更新在室内不起作用

CURL Post 不起作用(未发送正文)

SMTP仅发送正文不起作用Python [重复]

HTML,正文高度 100% 不起作用

Testcafe到端点的多个请求同步不起作用

Alamofire EmptyResponseCodes 不起作用