2013-02-26 14 views
3

我正在使用AngularJS資源向運行express的節點js服務器創建ajax post。但是我無法訪問NodeJS端的後期負載參數。

我有一個服務設置:

angular.module('app.services', ['ngResource']) 
    .factory('PostService', function($resource) { 
     return $resource('/postTest'); 
    }); 

和在控制器我有:

function UserCtrl($scope, PostService) { 
    //query for the users 
    $scope.testPost = function() { 
     var stuff = {firstname: 'some', lastname:'person'}; 
     PostService.save(stuff,function(data) { 
      console.log('called save on PostService'); 
     }); 
    }; 
} 

我可以看到的HTTP標頭內的有效載荷:

{"firstname":"some","lastname":"person"} 

但是,當我到達NodeJS路由來處理它時,我不知道如何訪問參數:

(從節點控制檯輸出):內部測試的東西 req.params不確定

app.post('/postTest', function(req, res) { 
     console.log('inside test stuff'); 
     console.log('req.params ' + req.param('stuff')); 
    }) 

我在創建一個小提琴:http://jsfiddle.net/binarygiant/QNqRj/

誰能解釋如何訪問通過在後傳遞的參數我的NodeJS路線?

在此先感謝

回答

3

如果「{」名字「:」一些「‘姓氏’:‘人’}」是在JSON後的身體?

你會以不同的方式訪問它。

使用express.bodyParser()req.body.firstname將讓你的名字

app.use(express.bodyParser()); 

然後

app.post('/postTest', function(req, res) { 
    console.log('inside test stuff'); 
console.log(req.body.firstname); 
}) 
+0

這樣做。我忘了添加app.use(express.bodyParser())。現在效果很好。 – binarygiant 2013-02-27 16:26:58

+0

由於大多數中間件(如bodyParser)不再與Express捆綁在一起,因此已棄用。 – WBT 2018-02-05 04:12:53

+0

沒錯。現在你需要'const bodyParser = require('body-parser')',然後使用'app.use(bodyParser.json())' – 2018-02-05 09:28:51

0

你需要設置身體解析器在您的應用

例如ExpressJs 4,

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