Javascript 我能';t从req.body node.js获取值

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

我需要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');
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'}
});