从Angular $ resource.save调用访问NodeJS中的Post参数

时间:2013-02-26 22:29:17

标签: node.js angularjs

我正在使用AngularJS资源向运行express的节点js服务器发布ajax帖子。但是我无法访问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 undefined

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

我在http://jsfiddle.net/binarygiant/QNqRj/

创建了一个小提琴

任何人都可以解释如何在我的NodeJS路线中访问帖子传递的参数吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

如果“{”firstname“:”some“,”lastname“:”person“}”在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);
})

答案 1 :(得分:0)

您需要在 App

中设置正文解析器

例如在ExpressJs 4中,

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