函数不从服务器返回客户端的值

时间:2015-08-27 19:21:44

标签: node.js mongodb mongoose meanjs yo

我有一个使用mongoose访问mongodb的函数,数据库调用工作并出现在控制台中,但它没有按原样返回该数组。无法弄清楚原因。

exports.getPrices = function() {
    return Price.find().exec(function (err, docs) {
        if (err) { 
            return err;
        }
        console.log(docs);
        return docs;
    });
};

来自服务的电话

angular.module('core')
    .factory('Machineprice', [ '$http',
        function($http) {
            return {
                getPrices:function(){  
                    return $http.get('/getPrices')    
                }
            };
        }
    ]
);

控制器

angular.module('core').controller('MachinePricingController', ['$scope','Machineprice',
    function($scope, Machineprice) {    
        $scope.prices = Machineprice.getPrices();
        console.log($scope.prices);
    }
]);

1 个答案:

答案 0 :(得分:0)

它不起作用,因为getPrices()以异步方式运行,这意味着它不会立即返回结果。该函数返回 promise ,这意味着必须在回调函数中处理结果。

引自AngularJS site

  

$ http服务是一个带有单个参数的函数 - a   配置对象 - 用于生成HTTP请求和   返回承诺

要使其正常工作,您必须更改控制器的代码。

angular.module('core').controller('MachinePricingController', ['$scope', 'Machineprice',

function ($scope, Machineprice) {
    Machineprice.getPrices().then(function (response) {
        $scope.prices = response.data;
        console.log($scope.prices);
    });

}]);