简体   繁体   English

当我发出 POST 请求时,req.body.someElement 未定义

[英]req.body.someElement is undefined when I make POST request

I have a problem with post request, the error is req.body get undefined values.我的 post 请求有问题,错误是 req.body get undefined values。 I am just started coding, and after researching on google and stackoverflow an answer, I found some answers on stackoverflow but them dont solve my problem.我刚开始编码,在谷歌和 stackoverflow 上研究了一个答案后,我在 stackoverflow 上找到了一些答案,但它们没有解决我的问题。 If I log name it has a value, but if I log req.body.name.type or typeOf name it is undefined.如果我记录 name 它有一个值,但如果我记录 req.body.name.type 或 typeOf name 它是未定义的。 I set my middleware body-parser before I set route but it not working.我在设置路由之前设置了我的中间件主体解析器,但它不起作用。 I also tryed to replace app.use(bodyParser.json());我也尝试替换 app.use(bodyParser.json()); with app.use(express.json());使用 app.use(express.json()); and nothing changed.什么都没有改变。 I atached my code below.我在下面附加了我的代码。

This is my index.js这是我的 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();

This is my routes index这是我的路线索引

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;

This is my Router for types这是我的类型路由器

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;

This is my controller for types这是我的 controller 类型

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();

Then method Type.create({name});然后方法 Type.create({name}); is executed it throw error "Cannot read property 'create' of undefined"被执行它抛出错误“无法读取未定义的属性'create'”

The problem seems to be not with req.body but with this line of code问题似乎不在于 req.body,而在于这行代码

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

Error Cannot read property 'create' of undefined is coming because Type is undefined.错误 Cannot read property 'create' of undefined is coming because Type is undefined. Check if you are properly importing Type value.检查您是否正确导入类型值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM