req.body给我未定义

时间:2018-09-05 15:17:24

标签: javascript node.js express

我创建了一个具有以下代码的控制器:

app.post('/users', (req, res) => {
        console.log(req.body);
        const user = new User({
            name: req.body.name,
            email: req.body.email
        });

        user.save((err, user) => {
            if (err)
                console.error(err);

            res.send(user);
        });
    })

我正在使用Postman通过/users端点发布新条目,但是每次执行TypeError: Cannot read property 'name' of undefined时都会出错。 正文已发送:

{
    "name": "Name",
    "email": "example@gmail.com"
}

尝试对其进行调试,正如您在代码中实际看到的那样,我在控制台中打印了req.body的值。它给了我undefined。 我想提到的是,我确实将这些包含在Express CLI生成的app.js中:

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

可能是什么问题,我该如何解决?

谢谢。

2 个答案:

答案 0 :(得分:-1)

您是否已将主体解析器添加到Express应用程序? 尝试使用正文解析器模块

const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());

答案 1 :(得分:-2)

基于req.bodyundefined并且您具有正确的contentType的事实,我建议您查看中间件与路由的顺序。中间件必须先于依赖它的任何路由。

https://expressjs.com/en/api.html#express.json