我正在使用 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
如何继续使用大量数据进行操作?
谢谢!
答案 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>
现在,您可以从这里了解如何分页或无限滚动。 (网上有关于此主题的各种内容)