2014-10-06 87 views
0

我正在使用一個MongoDB數據庫。 For the front AngularJS。我正在使用貓鼬Mongoose,AngularJS,NodeJS

我:

app.get("/images", function(req, res) { 
    mongoose.model('Image').find(function (err, images) { 
     res.send(images); 
    }); 
}); 
app.listen(3000); 

它正常工作,當我去:http://localhost:3000/images

則:

<div ng-repeat="photo in photos"> 
    <!-- My Data List --> 
    <h3>{{photo.name}}</h3> 
</div> 

直到這裏,一切都很好。

但是我將有如千位和千位的數據顯示。 因此,我需要像前面的「無限滾動」的東西,我也需要限制查詢範圍或分頁的API http://localhost:3000/images ???

我該如何着手處理大量數據

謝謝!

回答

0

使用服務器端分頁使用mongoose-paginate貓鼬,並限制您的查詢輸出。包含角度使用分頁的方法相同angular-ui pagination。如果你想使用無限滾動然後在角度使用ngInfiniteScroll

希望這會有所幫助。

+0

謝謝,我將採取看! – Carlos 2014-10-06 16:02:54

0

您可以使用貓鼬查詢API來指定哪些條件來搜索:http://mongoosejs.com/docs/queries.html

您可以使用where()到指定分頁標準,例如,where({id: {$gt: page}})(假設你正在使用某種形式的自動遞增的ID)和limit()來指定您的頁面大小,例如,limit(10)

每次您向服務器查詢其他頁面時,都需要在URL中提供條件:/images?page=1。每次獲取頁面時,這個標準應該增加10。

條件可以是表示數據順序排序的任何內容,無論是ID,還是時間戳或其他任意值。

0

爲了限制數據獴:

mongoose.model('Image').limit(10).exec(function(err, images){ 
    // get the images.... 
}); // this will only return 10 images 

雖然角度可以使用limitTo過濾器:

<div ng-repeat="photo in photos | limitTo: 10 "> 
    <!-- My Data List --> 
    <h3>{{photo.name}}</h3> 
</div> 

現在,從這裏你可以學到如何進行分頁或無窮遠滾動。 (網上有關於此主題的各種內容)

1

如果數量巨大,您可能不希望一次加載所有數據。 首先我會做這樣的事情,限制你爲每個請求獲得的條目數量。

app.get("/images", function(req, res) { 
    var query = mongoose.model('Image').find({}) 
       .limit(req.query.numberOfItems) 
       .skip(req.query.index) 

    query.exec(function (err, images) { 
     res.send(images); 
    });  
}); 
app.listen(3000); 

在客戶端,您應該決定在需要時動態加載更多數據。

這取決於你想要的用戶體驗是什麼一點點的是,例如有不同的網頁,一旦你打開下一個頁面加載更多的數據,或者如果用戶向下滾動進一步等

+0

感謝您的幫助! – Carlos 2014-10-06 16:03:28