Mongoose限制查询以获得更高的效果

时间:2015-12-25 14:33:01

标签: angularjs node.js mongodb mongoose

我正在尝试加载大量数据,而且需要花费很多时间。 在前端,我显示前5个数据。但我认为我也必须在后端方面。

我想点击按钮然后它会出现接下来的5个对象。在这种情况下,与Angular的前端工作,但我也会在后端站点。

如何发送到后端以加载下一个5个对象(记录)。 提前感谢您的帮助。

Node.js的

router.get('/load', function(req, res) {

    Experiences.find({}).lean().exec(function(err, docs_accommo) {

        res.send(docs_accommo);


    });

});

Angular.js

app.controller('loadData', ['$scope', '$http', '$window', '$upload', '$rootScope',
function($scope, $http, $window, $upload, $rootScope) {
$http.get('/load').success(function(data) {

        $scope.datafront = data;
    });

$scope.totalDisplayed = 5;

    $scope.loadMore = function() {
        $scope.totalDisplayed += 5;
    };

});

HTML

<div  ng-repeat="x in datafront | limitTo:totalDisplayed track by x._id" ng-cloak>
{{x}}

</div>


<button   class="btn btn-default" ng-click="loadMore()" style="float:right; margin-bottom:20px;" onClick="nanobar.go(100)">

加载更多     

1 个答案:

答案 0 :(得分:1)

我通常做这样的事情:

router.get('/load', function(req, res) {

    var skip = req.query.skip || 0;
    var limit = req.query.limit || 50;

    Experiences
        .find()
        .lean()
        .skip(skip)
        .limit(limit)
        .exec(function(err, docs_accommo) {

            res.send(docs_accommo);


    });

});

角:

app.controller('loadData', ['$scope', '$http', '$window', '$upload', '$rootScope',
function($scope, $http, $window, $upload, $rootScope) {
    $scope.datafront = [];

    function loadMore() {
        $http.get('/load',
                 {params: {limit: 5, skip: $scope.datafront.length}})
        .success(function(data) {

            $scope.datafront = $scope.datafront.concat(data);
        });
    }

    loadMore();


    $scope.loadMore = loadMore;

});