首页 > 解决方案 > 邮递员中的表单数据将空对象发送到 node.js

问题描述

我知道这已被多次询问,但我一直在环顾四周,仍然找不到我的问题的答案。

index.js 文件

const express = require("express");
require("dotenv").config({
  path: ".env",
});
const PORT = process.env.PORT || 5000;
const runDatabase = require("./config/database");
const path = require('path')

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

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

app.use("/uploads", express.static(path.join(__dirname, "uploads")));

// routers
const userRouter = require("./router/usersRouter");
const categoryRouter = require("./router/categoryRouter");
const productRouter = require("./router/productRouter");

app.use("/api", userRouter);
app.use("/api", categoryRouter);
app.use("/api", productRouter);

app.listen(PORT, () => {
  runDatabase();
  console.log(`The Backend Server is up and running on port ${PORT}`);
});


控制器文件

exports.createCategory = async (req, res) => {
  try {
    const { title, sort } = req.body;
    console.log(req.body); // print empty object

    await categoryModel.create({
      title,
      sort,
    });
    return res.status(200).send("created");
  } catch (err) {
    return res.status(400).send(err.message);
  }
};

这是我的代码,当以 JSON 原始邮递员发送请求时,我需要一个响应,但是当使用表单数据时,它将返回一个空正文

当我发送带有表单数据的数据时发生这种情况,返回一个空的正文 在此处输入图像描述

当我使用原始(Json)返回我需要的数据时,就会发生这种情况 在此处输入图像描述

标签: javascriptnode.jsexpress

解决方案


如果您使用该选项"x-www-form-urlencoded",我想它会起作用。所以事情是这样的:

  • 当您使用邮递员"form-data"时,将考虑multipart/form-data您需要一个库来解析表单数据,例如 multer。

  • 对于x-www-from-urlencoded原始数据,您可以使用 express 内置中间件或使用 body-parser 解析数据。


推荐阅读