【问题标题】:Express.js req.body prints undefined [closed]Express.js req.body 打印 undefined [关闭]
【发布时间】:2021-05-26 18:50:48
【问题描述】:
const  express = require('express')
const userRouter= require('./routes/user.js')
const User = require('./models/user.js')
var bodyParser = require('body-parser')


const app = express();
const port = process.env.PORT || 4200


app.use(bodyParser.urlencoded({
    extended: true
  }));
  
app.use(userRouter)

 const router = new express.Router()

 app.get('/',(req,res)=>{
     debugger
    console.log('Hello')
     res.send('Hello World')
 })



app.post('/clients',async (req,res)=>{
    const user = new User(req.body)
    debugger
    try{
        console.log("body "+req.body)
       var result = await  user.save()
        res.status(201).send(result)
    }catch(e){
        res.status(500).send(e)
    }
})


app.use(router);


app.listen(port,()=>{
    console.log('Server started at'+port)
})

/clients 端点打印 req.body undefined 我已经尝试了所有情况,但仍然无法找到错误

1.used //app.use(express.json) 但对我不起作用

  1. 当我在浏览器控制台中打印 req 时,我无法在 req 对象中找到正文参数

【问题讨论】:

  • 您如何测试/clients 端点?
  • @evolutionxbox 是
  • 对不起,这没有意义。您如何确保/clients 有效?
  • @evolutionxbox 只是将用户信息保存到 mongodb 中。和有效载荷如下。{ "name":"james", "age":28, "mobile":"990884", "email":"jamaes@gmail.com", "password":"james" }跨度>
  • @evolutionxbox 我用邮递员来测试它

标签: javascript node.js express


【解决方案1】:

你需要使用

app.use(bodyParser.json());

而不是urlencoded

更多信息 - https://www.npmjs.com/package/body-parser#bodyparserjsonoptions

请设置 JSON(application/json)

【讨论】:

  • // 解析应用程序/x-www-form-urlencoded >app.use(bodyParser.urlencoded({ extended: false })) // 解析应用程序/json >app.use(bodyParser.json ()),我试过了,但没有为我工作
  • 我能够从邮递员发送有效负载,它返回我为用户模型保留的验证错误。问题出在 req.body 上。当我在浏览器控制台中打印 req 时找不到正文。有什么想法吗?
  • 如果您使用的版本高于 Express v4.16.0,您可以删除 body-parser 并尝试 app.use(express.json()); expressjs.com/en/api.html#express.json
  • 甚至尝试过 app.use(express.json()) 对我不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 2017-10-02
相关资源
最近更新 更多