req.body 值未定义

时间:2021-04-10 06:04:40

标签: node.js mongodb express mongoose

我的 req.body 总是显示 {},即使我在我的代码中使用了 body-parser

用户模型


const userSchema = new mongoose.Schema({
    email: {
        type: String,
        required:true,
        index:true,
    },
    password: {
        type: String,
        required: true
    }
},{timestamps:true});

module.exports = mongoose.model('User', userSchema); 

路线

const express= require('express');
const router = express.Router();

const {currentUser} = require("../controllers/user");

router.post('/current-user', currentUser);

module.exports = router;

控制器

const User = require("../models/user");

exports.currentUser = async (req, res) => {
    const {email} = req.body
    console.log(email)
    // console.log(req.query)
    await User.findOne({email}).then((user) => {
        if (!user) {
            // console.log(user);
            return res.status(401).json({
              error: 'User not found!'
            });
        }
        res.json({
            data:"SUCCESS"
        })
    })
}

我收到一个错误:找不到用户,即使电子邮件 ID 存在。 如果我 console.log(req.body) => 输出: {} console.log(req.body.email) => 输出: undefined

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

您可能想要使用 bodyPrser() 中间件。 您可以阅读更多相关信息here

timestamp

然后,在你的 server.js 或 app.js 文件中

htmlcode

答案 1 :(得分:0)

请不要使用已经弃用的正文解析器,因为您已经在使用 express,因此有一个内置的正文解析器中间件,例如

const app = express()
app.use(express.json({ limit: '50mb' }))
app.use(express.urlencoded({ limit: '50mb', extended: true, parameterLimit: 50000 }))

这将完成身体解析器的工作。

其他的事情,你能告诉我们你在请求中发送了什么,因为它是一个发布请求,你可能正在发送一个空对象,这就是为什么你在 req.身体

我可以看到您正在从中提取电子邮件,但如果您能提供示例请求,那肯定会有所帮助。