我无法从req.body node.js获取值

时间:2015-09-27 17:27:04

标签: 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');
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());

3 个答案:

答案 0 :(得分:2)

你在第一位设置了主体的方式,看起来键是你的对象字符串,值是一个空字符串。

即你的身体是关键' {email:mail @ hostname.com,密码:12345}' (为清楚起见删除了引号) 价值''

尝试将你的身体写成

  {
    email: "email@email.com",
    password: "12345"
  }

答案 1 :(得分:0)

尝试(在客户端):

$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'}
});

答案 2 :(得分:0)

如果无法使用req.body.emailreq.body.password获取数据,则应使用req.query.emailreq.query.password。这应该返回查询中发送的数据,在这种情况下,查询是通过POST方法进行的。

希望它能起作用!