Mongoose:MongoDB for Pagination中的限制查询结果

时间:2017-05-01 13:40:56

标签: 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 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
      })
    });
})

1 个答案:

答案 0 :(得分:0)

您使用所有查询字符串参数作为要查询的属性:

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;