因为经常要做分页, 所以需要用到 skip和limit来获取当前页的值,
但是 在获取总页数, 所以有没有方式可以在一次查询中获取 总页数和 当前页的值?
现在是 分两次查询,结果再结合在一起。
1. count()
2. .skip(*).limit(*)
因为经常要做分页, 所以需要用到 skip和limit来获取当前页的值,
但是 在获取总页数, 所以有没有方式可以在一次查询中获取 总页数和 当前页的值?
现在是 分两次查询,结果再结合在一起。
1. count()
2. .skip(*).limit(*)
楼上的表述基本正确。不过代码还有可以优化的地方。count
和find
/skip
/limit
是典型的可以并行的运算。上面的写法变成了查完一个再查另外一个,有违nodejs的理念。改进一下:
async function getPage(pageNo, pageSize, query) {
result = await Promise.all([
db.count(query),
db.find(query).skip((pageNo - 1)*pageSize).limit(pageSize)
]);
return {
count: result[0],
list: result[1]
};
}
我觉得楼上的两种做法欠妥,因为count
的实现是这样的
> db.tasks.count
function ( x ){
return this.find( x ).count();
}
这是在mongodb的cli里面输出的。
一句话概述就是count其实还是调用的find。
所以这种查两次数据库的方法我认为是欠妥的。
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
没有一次查询返回的,不过你可以将这两个方法封装一下,每次调用不就可以么?