Node.js Mongoose:限制MongoDB中用于分页的查询结果

Node.js Mongoose:限制MongoDB中用于分页的查询结果,node.js,express,mongoose,pagination,Node.js,Express,Mongoose,Pagination,我得到了一个包含1k文档的集合,我想对它们进行分页,将其限制为只有16个文档的pr页面,然后使用skip方法。我如何通过URL查询实现这一点 现在我的路线看起来像这样,但不起作用 我可以查询:localhost:3000/api/feed?isActive=true,但我不能像我想的那样用localhost:3000/api/feed?isActive=true&page=16来限制它 router.get('/feed', function(req, res, next) { var pa

我得到了一个包含1k文档的集合,我想对它们进行分页,将其限制为只有16个文档的pr页面,然后使用skip方法。我如何通过URL查询实现这一点

现在我的路线看起来像这样,但不起作用 我可以查询:localhost:3000/api/feed?isActive=true,但我不能像我想的那样用localhost:3000/api/feed?isActive=true&page=16来限制它

router.get('/feed', function(req, res, next) {
  var params = req.query;
  var page = req.query.page;
  var pagesize = 16

  Feed.find(params)
    .sort({'date' : 1})
    .skip(pagesize*(page-1))
    .limit(pagesize)
    .exec(function(err, result) {
      if (err) return next(err);
      res.json({
        confirmation: 'success',
        result: result
      })
    });
})

您正在使用所有查询字符串参数作为属性来查询:

var params = req.query;
因为您现在正在添加一个新的查询字符串参数
page
,这将影响您的查询。在URL示例中,查询如下所示:

{
  isActive : 'true',
  page     : '16'
}
在将
req.query
用作查询文档之前,应删除该参数:

var page = req.query.page;
delete req.query.page;

var params = req.query;

因为您使用的是
req.query.page
而不是
req.query.limit
?嗯,我不这么认为-它似乎接受了这个查询:/api/feed?isActive=true&page=16 fine,但它没有返回任何内容:/在您编辑它之前,我指的是您原始问题中使用的
&limit=16