我们的馆藏有大约1亿份文件。我们在mongo查询中使用带有limit子句的nodejs和expressjs创建了一个简单的应用程序。对于现在的用户来说已经足够了。与此同时,我们尝试实现延迟加载,以便初始页面加载返回少量文档,当用户滚动时,我们希望加载更多文档。苦苦挣扎从哪里开始以及如何实现它。感谢您的建议。 我的index.js文件看起来像这样
router.get('/users', function(req, res) {
var db = req.db;
var users = db.get('users');
users.find(query, {limit: 10000}, function(e, docs){
res.render('users', {
title: 'Users',
'users': docs
});
});
});
我想删除限制并使用skip尝试实现此目的。 请发表您的建议
答案 0 :(得分:2)
This应该有所帮助。它使用.skip
游标的.find()
方法。我把它称为分页而不是延迟加载。
var itemsPerPage = 10;
router.get('/users/:pageNum', function(req, res) {
var db = req.db;
var users = db.get('users');
users.find(query, {skip: (itemsPerPage * (pageNum-1)), limit: itemsPerPage},function(e, docs){
res.render('users', {
title: 'Users',
'users': docs
});
});
});
答案 1 :(得分:0)
您可以在路线中实施paging
如下所示;
// GET /users?start=20
router.get('/users', function(req, res) {
var db = req.db;
var start = parseInt(req.query.start) || 0;
var users = db.get('users');
users.find(query, {start: start, limit: 10000}, function(e, docs){
res.render('users', {
title: 'Users',
'users': docs
});
});
});
答案 2 :(得分:-2)
我建议您使用Mongoose有效地为MongoDB对象建模,然后使用许多可用的mongoose分页模块之一。