ExpressJS响应数据未定义?

时间:2014-12-16 14:35:59

标签: angularjs express

如何将消息从Express发送到Angular?我可以记录响应,并查看我想要的变量,但Angular抱怨变量未定义。

在服务器上,我正在......

return res.status(200).send({ message: 'Life is good!' });

有棱有角,我正在......

angular.module('app').
    controller('testCtrl', function($scope, TestSvc, notify, $state){
        $scope.doSomething = function(){
            TestSvc.doSomething($scope.testValue).then(
                function(response){
                    console.log(response)
                    //notify(response.data.message);
                    //notify(response.message);
                    //notify('Success');
                    $state.go('confirm');
                },
                function(response){
                    notify.notify(response.data.message);
                });
        }
    });

该服务看起来正确:

angular.module('app').
    factory('TestSvc', function($q, $http){

        var _doSomething = function(value){
            var d = $q.defer();
            $http.post('/api/test-service', { testValue: value }).
                then(function(){
                    d.resolve();
                }, function(response){
                    d.reject(response.data.reason);
                });
            return d.promise;
        };

        return {
            doSomething: _doSomething
        };
    });

客户端的日志显示响应的以下内容:

{ "message":"Life is good!" }

我尝试过使用response.data.messageresponse.messageresponse.body.message ...所有回来都是undefined。我到底做错了什么?!?!?

1 个答案:

答案 0 :(得分:0)

服务中'then'块上的

更改为此(更改解决方案):

$http.post('/api/test-service', { testValue: value }).
            then(function(data){
                d.resolve(data);
            }, function(response){
                d.reject(response.data.reason);
            });
        return d.promise;