【问题标题】:I can't get values from req.body node.js我无法从 req.body node.js 获取值
【发布时间】:2019-05-14 16:48:31
【问题描述】:

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

【问题讨论】:

    标签: javascript node.js express body-parser


    【解决方案1】:

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

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

    试着把你的身体写成

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

    【讨论】:

    • 嗯,这个 json 是用这个角度代码创建的: $http({ method: 'POST', url: 'localhost:3000/api/loginByEmail', data: {'email': this.formLoginByEmail.username, '密码':this.formLoginByEmail.password},标题:{'Content-Type':'application/x-www-form-urlencoded'}})
    • 您是否尝试将 Content-Type 标头更改为 'application/json' ?
    【解决方案2】:

    尝试(在客户端):

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

    【讨论】:

      【解决方案3】:

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

      希望它有效!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-24
        • 2019-02-04
        • 2020-08-10
        • 2019-02-10
        • 1970-01-01
        • 1970-01-01
        • 2021-10-20
        • 1970-01-01
        相关资源
        最近更新 更多