0

我需要关于 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());
4

3 回答 3

2

您在第一位设置正文的方式,看起来键是您的对象字符串,值是空字符串。

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

试着把你的身体写成

  {
    email: "email@email.com",
    password: "12345"
  }
于 2015-09-27T18:11:51.703 回答
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'}
});
于 2015-09-28T00:15:22.150 回答
0

如果你不能通过使用获取数据,那么你应该使用req.body.emailand 。这应该返回在查询中发送的数据,在这种情况下,查询是通过 POST 方法。req.body.passwordreq.query.emailreq.query.password

希望它有效!

于 2019-05-14T08:48:31.180 回答