【问题标题】:req.body.someElement is undefined when I make POST request当我发出 POST 请求时,req.body.someElement 未定义
【发布时间】:2022-03-09 09:36:26
【问题描述】:

我在发布请求时遇到问题,错误是 req.body 获取未定义的值。 我刚刚开始编码,在研究了 google 和 stackoverflow 的答案后,我在 stackoverflow 上找到了一些答案,但它们并没有解决我的问题。如果我记录 name 它有一个值,但如果我记录 req.body.name.type 或 typeOf name 它是未定义的。我在设置路由之前设置了我的中间件正文解析器,但它不起作用。我还尝试替换 app.use(bodyParser.json());与 app.use(express.json());什么都没有改变。我在下面附上了我的代码。

这是我的 index.js

const express = require("express");
require('dotenv').config();
const sequelize = require('./db');
const cors = require('cors');
const router = require("./routes/index");
const errorHandler = require("./middlewares/ErrorHandlingMiddleware");
const bodyParser = require("body-parser");


const app = express();
app.use(bodyParser.json());
app.use(cors());
app.use("/api", router);
app.use(errorHandler);


const start = async ()=>{
    try {
        //make connection with our database
        await sequelize.authenticate();
        await sequelize.sync();

        app.listen(process.env.PORT || 5000, () => {
            let date = new Date(Date.now());
            let serverStartTime = date.getDate() + "." + date.getMonth() + "." + date.getFullYear() + "  " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
            console.log("Server was start/restart on port 5000: " + serverStartTime);
        });
    } catch (exception){
        console.log(exception);
    }
}

start();

这是我的路线索引

const Router = require("express");
const router = new Router();
const brandRouter = require("./brandRouter");
const deviceRouter = require("./deviceRouter");
const typeRouter = require("./typeRouter");
const userRouter = require("./userRouter");

router.use("/user", userRouter);
router.use("/type", typeRouter);
router.use("/brand", brandRouter);
router.use("/device", deviceRouter);

module.exports = router;

这是我的类型路由器

const Router = require("express");
const router = new Router();
const typeController = require("../controllers/typeController");
const bodyParser = require("body-parser");
const jsonBodyParser = bodyParser.json();

router.post("/", typeController.addType);
router.get("/", typeController.getAllTypes);

module.exports = router;

这是我的类型控制器

const {Type} = require("../models/models");
const ApiError = require("../errors/ApiError");

class TypeController {

    async addType(req, res, next) {
        const {name} = req.body;
        const type = await Type.create({name});
        res.json(req.body);

    }

    async getAllTypes(req, res) {
        const types = await Type.findAll();
        return res.json(types);
    }

}

module.exports = new TypeController();

然后方法 Type.create({name});执行它会抛出错误“无法读取未定义的属性'create'”

【问题讨论】:

    标签: javascript node.js express body-parser


    【解决方案1】:

    问题似乎不在于 req.body 而在于这行代码

    const {Type} = require("../models/models");
    

    错误无法读取未定义的属性“创建”,因为类型未定义。检查您是否正确导入类型值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多