请求正文有价值,但我无法访问它

我目前正在从angular2前端进行一些用户注册来expression后端。 除了从请求主体获取值之外,一切工作都很好。 看看这个。

usersRoute.js

userRouter.route('/signup') .post(function(req, res){ console.log(req.body); mongoose.connect(url, function(err){ var user = { username: req.body.username, password: req.body.password, firstname: req.body.firstname, lastname: req.body.lastname, gender: req.body.gender, address: req.body.address, contact: req.body.contact, email: req.body.email }; console.log(user); users.create(user, function(err, results){ // res.redirect('http://localhost:4200/login'); //tobeChanged console.log(results); mongoose.disconnect(); }); }); }); 

在第一个console.log我试图看看req.body是否有一个值,然后在第二个console.log是当我想看看用户variables是否有一些价值。 这是发生了什么事。

在这里输入图像描述

正如我们所看到的, 用户variables没有价值,但我通过req.body访问它。 名称 。 有人可以帮我澄清一下吗?

可选问题:那些\ n打扰我。 如何摆脱它?

问题:

这里你的请求对象的范围是不同的。 你想在函数callback中使用请求对象。

所以你可以做的一件事是传递那个调用callback的值。

解决scheme:改变这个

mongoose.connect(url, function(err){

对此

mongoose.connect(url, function(err,req){

希望这会有所帮助。谢谢

您可以尝试在callback之外声明user对象。

 .post(function(req, res){ console.log(req.body); var user = { username: req.body.username, password: req.body.password, firstname: req.body.firstname, lastname: req.body.lastname, gender: req.body.gender, address: req.body.address, contact: req.body.contact, email: req.body.email }; mongoose.connect(url, function(err){... 

如果不起作用,您可以使用绑定将数据带入。

你需要使用一些像body-parser这样的库来做到这一点。 该修补程序将添加以下几行代码:

 var bodyParser = require('body-parser'); var urlencodedParser = bodyParser.urlencoded({ extended: false }); 

并更改代码的前两行,如下所示:

 userRouter.route('/signup') .post(urlencodedParser,function(req, res){ 

这样做的原因是http post请求的主体不是通过express来提取的,因此需要像body-parser这样的库来执行任务。