繁体   English   中英

Express 4.17.1 req.body 返回 undefined

[英]Express 4.17.1 req.body returns undefined

代码分为 2 个文件: 主文件:server.js 路由器文件:user.js 在 user.js 文件中 req.body 返回 undefined 并且不将数据保存到数据库

发送到 /user/register 的数据返回“无法保存到数据库”。 我已经尝试过 bodyParser.json() 和 bodyParser.urlencoded({extended: true}),尽管 express 4.17.x 中不需要它,而且它们不起作用。 其他常见的解决方案,如 app.use(express.json()) 也没有帮助。

服务器.js

const express = require('express')
const mongoose = require('mongoose')
const User = require("./models/userSchema");

const userRouter = require('./routes/user')
const placeRouter = require('./routes/place');
const bodyParser = require('body-parser');

const app = express()
const PORT = 5000

app.use(express.json())


mongoose.connect('mongodb://localhost:27017/instaDB', {
    useNewUrlParser: true,
    useUnifiedTopology: true
}, () => {
    console.log('Connected to Database');
})

app.use('/user', userRouter)



app.listen(PORT, ()=>{
    console.log(`Listening on PORT: ${PORT}`);
})

用户.js

const express = require('express')
const User = require("../models/userSchema");

userRouter = express.Router()

userRouter.post('/register', (req, res) => {
    const {username, password} = req.body
    console.log(req.body.username);
    console.log(password);
    User.findOne({username}, (err, user) => {
        if(err){
            res.status(500).json({
                err: true,
                msgBody: 'Server Error'
            })
        } if(user){
            res.status(400).json({
                err: true,
                msgBody: 'Username already exists'
            })
        }
        else{
            const newUser = new User({
                username,
                password
            })

            newUser.save((err)=>{
                if(err){
                    res.status(500).json({
                        err: true,
                        msgBody: 'Could not save to database'
                    })
                } else {
                    res.status(200).json({
                        err: false,
                        msgBody: 'Registered Successfully'
                    })
                }
            })
        }
    })
})

   
module.exports = userRouter;

我猜初始请求缺少 header Content-Type: application/json
所以 Express json 解析器会忽略请求正文,因为它没有被键入为 json。
所以解析器不会填充 req.body 字段。

尝试将此 header 与此值( Content-Type: application/json )添加到您的请求中。

您将如何做到这一点取决于您如何发送此请求( curl、postman、javascript xhr、react/angular...、lib...

暂无
暂无

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

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