2016-04-24 67 views
0

嘗試理解用戶認證以便集成到我的Web應用程序中。我一直在關注http://www.sitepoint.com/user-authentication-mean-stack/作爲指導。表示不將服務對象發送到API控制器

我是新手,當涉及到webdev,所以我遇到了麻煩尋找正確的事情來解決我的問題。問題是當我嘗試註冊一個新用戶時,我的對象在我的api控制器中沒有收到。

register.controller.js

(function() { 
    angular 
    .module('misplaced') 
    .controller('registerCtrl', registerCtrl); 

    registerCtrl.$inject = ['$location', 'authentication']; 
    function registerCtrl($location, authentication) { 
    var vm = this; 
    vm.onSubmit = function() { 
    authentication 
     .register(vm.credentials) 
     .error(function(err){ 
     alert(err); 
     }) 
     .then(function(){ 
     $location.path('profile'); 
     }); 
    }; 

authentication.service.js

(function() { 
angular 
.module('misplaced') 
.service('authentication', authentication); 

authentication.$inject = ['$http', '$window']; 
function authentication ($http, $window) { 
    register = function(user) { 
    return $http.post('/api/register', user).success(function(data){ 
    saveToken(data.token); 
    }); 
}; 

authentication.js

module.exports.register = function(req, res) { 

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

    user.save(function(err) { 
    var token; 
    token = user.generateJwt(); 
    res.status(200); 
    res.json({ 
     "token" : token 
    }); 
    }); 
}; 

通過一些console.log我已經跟蹤,該對象得到創建罰款從register.controller並獲得傳遞到authentication.service罰款,但是當我嘗試console.log對象在authentication.js文件它是空的。有人可以幫我解釋一下可能發生的事情嗎?提前致謝!

+0

你怎麼在控制檯中看到,如果你在成功處理程序在你的'authentication.service.js'登錄'data'訪問請求主體的屬性? – mindparse

+0

好吧,我只是重新讀你的問題,所以我猜如果你嘗試console.log在你的服務器端控制器'req.body',這將返回爲空? – mindparse

回答

0

這聽起來像是Express配置問題,您可能不會在Express中使用bodyParser模塊。

var bodyParser = require('body-parser'); 
var app = express(); 

app.use(bodyParser.json()); 

這將使你的中間件在req.body