我需要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());
答案 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.email
和req.body.password
获取数据,则应使用req.query.email
和req.query.password
。这应该返回查询中发送的数据,在这种情况下,查询是通过POST方法进行的。
希望它能起作用!