微信小程序云函数中的 limit() 和 skip(),以及实现分页请求
1️⃣先来了解一下请求云数据库的两个关键方法
1.limit()
limit获取指定条数的数据。
例如:返回10条数据 limit(10)
2.skip()
skip指定从第几条数据开始获取。
例如:从第11条数据,包含第11条 skip(10)
从第1条开始就是skip(0),从第6条开始就是skip(5),以此类推
3.结合起来使用即可实现分页的效果
例如每页获取20条:
第1页 limit(20).skip(0)
第2页 limit(20).skip(20)
第3页 limit(20).skip(40)
第4页 limit(20).skip(60)
第5页 limit(20).skip(80)
由此可发现规律:
skip() 里面的数值为:(页数 - 1) * 条数
,也就是skip((页数 - 1) * limit)
2️⃣云函数实现
// 云函数入口文件
const cloud = require('wx-server-sdk');cloud.init({env: cloud.DYNAMIC_CURRENT_ENV,throwOnNotFound: false
});const db = cloud.database();// 云函数入口函数
exports.main = async (event, context) => {// 先取出集合记录总数const countResult = await db.collection(event.gather).count();const total = countResult.total;const dataResult = await db.collection(event.gather).skip((event.page - 1) * event.size).limit(event.size).get();return {total: total, // 把总条数一起返回可计算出能分成多少页,方便web端分页器效果实现...dataResult};
};
3️⃣如何使用
data里面传的值在云函数的event参数中获取
wx.cloud.callFunction({name: "云函数名",data: {gather: "请求的集合名",page: 1,size: 20},success(res) {console.log(res);},fail(err) {console.log(err);}
})