Node.js Mongoose:限制MongoDB中用于分页的查询结果
我得到了一个包含1k文档的集合,我想对它们进行分页,将其限制为只有16个文档的pr页面,然后使用skip方法。我如何通过URL查询实现这一点 现在我的路线看起来像这样,但不起作用 我可以查询:localhost:3000/api/feed?isActive=true,但我不能像我想的那样用localhost:3000/api/feed?isActive=true&page=16来限制它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
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
。