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

function not returning value to client from server

我有一个使用 mongoose 访问 mongodb 的函数,数据库调用有效并出现在控制台中,但它没有 return 该数组。想不通为什么。

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);
    }
]);

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

引自AngularJS site

The $http service is a function which takes a single argument — a configuration object — that is used to generate an HTTP request and returns a promise.

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

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

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

}]);