请求正文有价值,但我无法访问它
我目前正在从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这样的库来执行任务。