Mongoose,AngularJS,NodeJS

时间:2014-10-06 14:38:20

标签: node.js angularjs mongoose

我正在使用 MongoDB 数据库。 对于前面 AngularJS

另外,我正在使用 Mongoose

我有:

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>

直到这里,一切都很好。

但是我会想要显示数千个数据。 所以我需要像&#34;无限滚动&#34;对于前端,我还需要使用查询范围或分页限制API http://localhost:3000/images

如何继续使用大量数据进行操作?

谢谢!

4 个答案:

答案 0 :(得分: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);

在客户端上,您应该决定在需要时动态加载更多数据。

这取决于您希望用户体验的内容,例如具有不同的页面,并且一旦打开下一页或者用户向下滚动等等,您就会加载更多数据。

答案 1 :(得分:0)

使用mongoose-paginate在mongoose中使用服务器端分页并限制查询输出。在角度使用angular-ui pagination中包含分页的方法相同。如果你想使用无限滚动,那么角度使用ngInfiniteScroll

希望这有帮助。

答案 2 :(得分:0)

您可以使用mongoose查询API来指定要搜索的条件:http://mongoosejs.com/docs/queries.html

您可以使用where()指定分页条件,例如where({id: {$gt: page}})(假设您使用某种自动递增ID)和limit()来指定您的页面大小,例如,limit(10)

每次向服务器查询其他页面时,都需要在网址中提供条件:/images?page=1。每次获取页面时,此标准应增加10。

标准可以是表示数据顺序排序的任何内容,无论是ID,时间戳还是其他任意值。

答案 3 :(得分:0)

限制mongoose中的数据:

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>

现在,您可以从这里了解如何分页或无限滚动。 (网上有关于此主题的各种内容)