【问题标题】:app.get req.body undefinedapp.get req.body 未定义
【发布时间】:2015-10-15 05:42:09
【问题描述】:

我是一个 MEAN stack newb,遇到路由问题,大概是解析:下面的代码给我一个 req.body: undefined.:

Server.js:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://127.0.0.1/roomem');

var Roomie = require('./public/models/roomie.server.model');

app.use(bodyParser.json());

var roomieRoutes = require('./public/routes/roomie.server.routes');

roomieRoutes(app);

module.exports = app;
app.listen('3000');

Controller.js:

roomem.controller('roomieCtrl', ['$scope', '$http', '$location', '$log', function($scope, $http, $location, $log)
    {
        $scope.login = function()
        {
            console.log($scope.person.meta);  // This outputs the object correctly
            $http.get('/roomielogin',$scope.person.meta).success(function(response)
            {
                console.log(response);  // This returns null
            });
        }

    }]);

roomie.server.route.js:

module.exports = function(app)
{
    app.get('/roomielogin', function(req,res)
    {
        console.log(req.body);     // displays undefined
        console.log(req.headers);  // shows that the document can be json
        var name = req.body.username;
        var query  = Roomie.where({ 'meta.username': name });
        query.findOne(function(err, doc) {
          if (err) return console.error(err);
          console.log(doc);
          res.json(doc);
        });
    });
}

我几乎尝试了所有方法,并阅读了所有关于此的帖子。大多数时候,人们只是把他们的 app.use(bodyParser.json());他们的剧本太晚了,但我的似乎是在正确的地方。所有其他查询都正常工作。这是唯一有问题的。感谢您的帮助。

【问题讨论】:

    标签: angularjs node.js express routes mean


    【解决方案1】:

    如果你在正文中发送数据,而不是GET,你需要做 POST 请求。

    改变-

    $http.get('/roomielogin',$scope.person.meta)

    $http.post('/roomielogin',$scope.person.meta)

    &

    app.get('/roomielogin', function(req,res)

    app.post('/roomielogin', function(req,res)

    【讨论】:

    • 哈!那行得通!那么为什么 GET 在这种情况下不起作用呢?谢谢顺便说一句!
    • 嗯,有点工作。控制器成功地将数据传递给路由。现在的问题是路由仍然返回一个空响应给调用控制器。这样问题就解决了一半!
    • @Nick 这是一个不同的问题
    • console.log(doc) 中的内容;
    • 我得到的不是通常出现的 JSON 对象,而是 [Object object],它显然无法解包,因为任何引用内部内容的尝试都会给我 null。作为一种临时解决方法,我已将控制器设置为返回单个字符串而不是对象,并且我使用该字符串来获取所需的其余部分。当然,我更喜欢普通的对象。
    猜你喜欢
    • 2012-02-28
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多