使用 nodejs 和 mongoDB 作为后端数据进行延迟加载

Lazy loading using nodejs and mongoDB as backend data

我们的 collection 有大约 1 亿份文件。我们使用 nodejs 和 expressjs 创建了一个简单的应用程序,并在 mongo 查询中使用了 limit 子句。对于现在的用户来说已经足够了。与此同时,我们正在尝试实现延迟加载,以便初始页面加载 returns 几个文档,当用户滚动时,我们希望加载更多文档。挣扎着从哪里开始以及如何提前实施它。感谢您的建议。 我的 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 尝试实现此目的。 请post您的建议

我建议您使用 Mongoose 高效地建模 MongoDB 对象,然后使用许多可用的 Mongoose 分页模块之一。

您可以在您的路线中实施 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  
    });
  });
});

This 应该有帮助。它使用 .find() 游标的 .skip 方法。我称之为分页而不是延迟加载。

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  
    });
  });
});