2015-09-03 59 views
0

嘗試從MEAN應用程序中的註冊表單發佈,我可以使用Postman成功發佈使用x-www-form-urlencoded,但是當應用程序中的請求主體爲空時console.log它。 寄存器形式(部分):Node.js request.body爲空

<form class="form-horizontal" ng-submit="register.saveUser()"> 

      <div class="form-group"> 
       <label class="col-sm-2 control-label">Name</label> 
       <div class="col-sm-6"> 
        <input type="text" class="form-control" ng-model="user.userData.name"> 

api.js(部分)

var bodyParser = require('body-parser'); // get body-parser 
var User  = require('../models/user'); 
var jwt  = require('jsonwebtoken'); 
var config  = require('../../config'); 


var superSecret = config.secret; 

module.exports = function(app, express) { 

    var apiRouter = express.Router(); 

    apiRouter.post('/register', function(req, res) { 

      var user = new User(); 
      user.name = req.body.name; 
      user.username = req.body.username; 
      user.password = req.body.password; 

      console.log(req.body); //EMPTY 

我有app.use bodyParser在server.js該呼叫之前api.js

服務器.js(部分)

app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

var apiRoutes = require('./app/routes/api')(app, express); 
app.use('/api', apiRoutes); 

我做錯了什麼,但看不到什麼。

增加對@mscdex: register.saveUser()是指userRegisterController saveUser()函數:

.controller('userRegisterController', function(User) { 

    var vm = this; 

    // function to create a user 
    vm.saveUser = function() { 
     vm.processing = true; 
     vm.message = ''; 

     // use the register function in the userService 
     User.register(vm.userData) 
      .success(function(data) { 
       vm.processing = false; 
       vm.userData = {}; 
       vm.message = data.message; 
      }); 

    }; 

它使用userService寄存器功能:

// register a user 
    userFactory.register = function(userData) { 
     return $http.post('/api/register/', userData); 
    }; 

此調用的API文件,我已在上面發佈。

順便說一下,當我使用Postman時,console.dir(req.headers ['content-type'])顯示'application/x-www-form-urlencoded'並且成功。

+1

你能分享你的角色部分嗎? – Subham

+2

register.saveUser()是做什麼的? –

+0

您可能還想在路由處理程序中仔細檢查'console.dir(req.headers ['content-type'])'的值。 – mscdex

回答

0

我花了這個今天在相當多的時間,最終,而我應該用

<input type="text" class="form-control" ng-model="register.userData.name"> 
由apiRouter功能正在接收的「未定義」的問題是由於我使用的

<input type="text" class="form-control" ng-model="user.userData.name"> 

,因爲我曾在apiRoutes文件中使用

.when('/register', { 
      templateUrl: 'app/views/pages/register.html', 
      controller: 'userCreateController', 
      controllerAs: 'register' 
     }); 

。 我仍然在這種情況下學習ControllerAs的用法。