PUT/PATCH方法返回Undefind和{}对象,当在nodejs、expressJs中使用表单数据时

xcitsw88  于 2023-02-21  发布在  Node.js
关注(0)|答案(1)|浏览(84)

我被困了两天,我尝试了所有的解决方案,但是当我在nodejs中使用PUT和PATCH运行方法时,仍然得到了undefined或{}对象
Postman screen shot is here
index.js

[const express = require("express")
const cors = require("cors")
const bodyParser = require("body-parser")
require("./db/db.config")

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

const PORT = 8000

const Customer = require("./routes/customerRoutes")
app.use(cors())
app.use(Customer)

app.listen(PORT, () => {
  console.log("Server is running on", PORT)
})][1]

package.json

"dependencies": {
    "body-parser": "^1.20.1",
    "cors": "^2.8.5",
    "express": "^4.18.2",
    "moment": "^2.29.4",
    "mongoose": "^6.9.2",
    "multer": "*",
    "validator": "^13.9.0"
  },
a14dhokn

a14dhokn1#

您的Postman请求被设置为form-data,这意味着内容类型为multipart/form-data,并且您没有任何Express中间件来读取/解析该内容类型。
将postman更改为x-www-form-urlencodedjson以匹配您现有的中间件,否则您将不得不安装可以处理multipart/form-data的中间件。通常,除非您将文件数据与表单数据沿着上传,否则您不会使用multipart/form-data,因为这就是使用multi-part(多个部分上传)的原因。
在Postman示例中,您显示了x-www-form-urlencoded的屏幕截图,内容类型x-www-form-urlencoded应该可以正常工作,您的app.use(bodyParser.urlencoded({ extended: true }))中间件将处理它,这就是标准HTML表单上载的典型情况。

相关问题