Javascript 我能';t从req.body node.js获取值
我需要node.js的帮助: 我的req.body是这样填充的Javascript 我能';t从req.body node.js获取值,javascript,node.js,express,body-parser,Javascript,Node.js,Express,Body Parser,我需要node.js的帮助: 我的req.body是这样填充的 { '{ "email":"mail@hostname.com", "password":"12345" }' : '' } 但我无法获取未定义的req.body.email和req.body.password值 我的代码是: user.js exports.loginByEmail= function(req, res) { console.log('POST'); c
{
'{
"email":"mail@hostname.com",
"password":"12345"
}'
: ''
}
但我无法获取未定义的req.body.email和req.body.password值
我的代码是:
user.js
exports.loginByEmail= function(req, res) {
console.log('POST');
console.log(req.body);//show values
console.log(req.body.email);//undefined
console.log(req.body.password);//undefined
User.find({email:req.body.email,password:req.body.password}).toArray(function(err, userLoged) {
if(err) return res.send(500, err.message);
res.status(200).jsonp(userLoged);
});
};
app.js
var express = require("express"),
app = express(),
bodyParser = require("body-parser"),
methodOverride = require("method-override");
mongoose = require('mongoose');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(methodOverride());
按照在第一位设置主体的方式,看起来键是对象字符串,值是空字符串 ie你的身体是关键{电子邮件:mail@hostname.com,密码:12345}(为了清楚起见,删除了引号) 值为“” 试着把你的身体写成
{
email: "email@email.com",
password: "12345"
}
尝试(在客户端):
如果使用
req.body.email
和req.body.password
无法获取数据,则应使用req.query.email
和req.query.password
。这将返回查询中发送的数据,在本例中,查询是通过POST方法进行的
希望它能起作用 这个json是在这个角度代码中创建的:$http({method:'POST',url:'',数据:{'email':this.formLoginByMail.username,'password':this.formLoginByMail.password},头:{'Content-Type':'application/x-www-form-urlencoded'})您是否尝试将内容类型标题更改为“application/json”?
$http({
method: 'POST',
url: 'http://localhost:3000/api/loginByEmail',
data: 'email=' + encodeURIComponent(this.formLoginByEmail.username) +
'&password=' + encodeURIComponent(this.formLoginByEmail.password),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});