我一定是做错了。当使用mongod(node.js)从mongodb获取数据时,我使用skip和limit实现了分页。
const query = {};
query.page = Number(request.query.page) || 0;
query.limit = Number(request.query.limit) || 36;
query.skip = query.page > 0 ? ((query.page - 1) * query.limit) : 0;
query.query = null;
db.collection('product').find( query.query , null, {
skip: query.skip,
limit: query.limit
// sort etc
}, (err, data) => {
if(err) {
return reply(Boom.internal('Internal DB error', err));
} else {
return reply( data.toArray() )
}
});
当我访问我的api时:
http://localhost:3000/api/products?page=700&limit=7
7件物品归还给我......但
http://localhost:3000/api/products?page=700&limit=36
不返回任何项目....当然它应该返回那些存在的7个?任何建议都非常感谢。
**编辑 - 更新代码以显示查询...这都是在hapi应用程序中使用。为简洁起见,我已经删除了所有处理程序的东西。
**编辑 - 请参阅托马斯的
“page = 700& limit = 7等于指数4900 .. 4906而page = 700& limit = 36将是项目25200 ... 25235,它们似乎不存在。您可以尝试获取页面= 136安培;限制= 36"
基本上 - 页数是基于限制的......我把自己推到了范围之外。
query.skip = query.page > 0 ? ((query.page - 1) * query.limit) : 0;
......我应该阅读我的代码......