我应该使用 req.body.item 从 post 请求中获取 body 吗?

凯。

我学会了在使用 express 时如何从 post 请求中获取正文数据。大多数示例代码表示req.body.item应该能够获取我想要使用的值,例如,将值插入表中。

但是我无法获得价值,req.body.item但最终可以通过req.body.body.value. 我是不是没有以正确的方式获取 post body 值,或者这不是问题?

Node.js
  v14.15.4
Nuxt.js
  @ v2.15.4
Vue.js
  [email protected]
Express
  ^4.17.1

(expense.vue),使用正确的代码
发布表单数据更新为“books/books/add”

<template>
  <div>
    <div class="main">
      <h3>please type expense name and amount</h3>
      <form @submit.prevent="addToBookDB">
        <label for="name_expense">expense name: </label>
        <input v-model.trim="expenseTitle" />
        <label for="price_expense">expense amount: </label>
        <input v-model="expenseSummary" />
        <input type="submit" value="Submit" />
      </form>
    </div>
  </div>
</template>

<script>
import Vue from 'vue'
import axios from 'axios'

Vue.config.productionTip = false

export default {
  data () {
    return {
      expenseTitle: 'Title',
      expenseSummary: 'Summary',
    }
  },
  methods: {
    addToBookDB (event) {
      console.log(event)
      const formData = {
        expenseTitle: this.expenseTitle,
        expenseSummary: this.expenseSummary
      }
      console.log(JSON.stringify(formData))
      //<<wrong code↓>>
      //axios.post('books/books/add', {
      //  headers: {
      //    'Content-Type': 'application/json'
      //  },
      //  body: formData
      //<<correct code↓>>
      axios.post('books/books/add', formData
      ).then((response) => {
        console.log(response)
        return response
      }).catch((response) => {
        console.log(response)
        return response
      })
    }
  }
}
</script>

(books.js),更新了正确的代码,
将收到的帖子数据插入到表中

const express = require('express')
const app = express()

app.use(express.json())
app.use(express.urlencoded({
  extended: true
}))

app.get('/books', (req, res) => {
  // (omitted)
})

app.post('/books/add', (req, res, next) => {
  const mysql = require('mysql')
  const connection = mysql.createConnection({
    host: '***.*.*.*',
    user: '******',
    database: '******',
    password: '******',
  })
  connection.connect()
  //const expenseTitle = req.body.body.expenseTitle
  const expenseTitle = req.body.expenseTitle
  connection.query("INSERT INTO book (title, summary) values (?,'1000');", [expenseTitle], function (error, row, fields) {
    res.redirect('./')
  })
  connection.end()
})

module.exports = {
  path: '/books',
  handler: app,
}
TJ克劳德

问题是你的axios.post电话。的第二个参数axios.post是您要发送的数据,而不是选项对象。所以,你要发送的是数据headers属性和body属性。(看起来您已经习惯使用fetch。)选项是第三个参数。

如果你需要给出标题,它会是这样的:

axios.post("books/books/add", formData, {
    headers: {
        "Content-Type": "application/json"
    },
})
// ...

...但你没有,jonrsharpe 告诉我,默认情况下axios会字符串化对象并发送适当的标头,所以:

axios.post("books/books/add", formData)
// ...

您还应该有一个.catchafter.then来处理错误,因为您没有从.then.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

解析POST请求中的req.body

req.body 在 post 请求中未定义

我可以在发帖请求中写req.body.first-name吗?

我可以在Express的自定义错误处理程序中访问req(如req.body)吗?

使用req.body解析器的POST对象数组

即使使用body-parser,node.js post方法req.body也未定义

req.body为[Object:null prototype] {},并且使用multer处理包含表单数据的POST请求时req.files为空

如何使用BODY快速发送POST请求

我可以在 Web Api 中使用不是驼峰格式格式的 Post 请求数据(我的意思是 json body)吗?

req.body.item 未定义 - 删除请求 express js

反应,将数据发送到req.body中的后端,不能使用来自req.body的字段

Req.Body 未定义的 NODE.JS POST 请求

如何使用HttpClient以角度将内容发送到GET请求的req.body中?

为什么我的req.body在POST上总是为空?

nodejs 中的 req.body 变空了:{}?

req.body 在 JQuery 中未定義

Node.js-即使req.body不为空,也不会调用POST中的req.on(“ data”)

带有数据的POST上req.body为空,但是记录req显示req.body存在

express POST req.body 解析器为空

Express js bodyparser post req.body 不工作?

無法獲取 req.body 的 post 值

Post req.body 總是空對象

Express Node JS POST。如何不使用url参数将值添加到我的req.body

我在 req.body 上对特定字段提出请求时出现了奇怪的行为

当对象与get / post请求一起发送时,express为req.body返回一个空对象

如何根据API类型使用BODY发送POST或GET请求

使用@Body 改造 POST 请求返回空响应正文

对于表单 GET 请求,req.body 为空

如何在Express中访问我的req.body数据/ json?