背景
在我的小程序中有这么一个业务——查询当前登录用户所有位置打卡记录,在微信js中只能一次性获取20条,但是不足以达到我的目的,于是使用云函数获取数据库数据(一次可获取100条),但是要达到该用户全部数据都查询出来,需要加个分页循环查询。
第一步:创建云函数
找到云函数列表,单击鼠标右键,创建云函数,创建云函数前需要有云开发环境,具体介绍请点击看我另一篇博客有介绍,需要创建云开发小程序
第二步:找到云函数里面的index.js,编写查询数据库数据的方法
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database();
// 云函数入口函数
exports.main = async (event, context) => {
// 在云函数中获取微信调用上下文
const wxContext = cloud.getWXContext();
// 根据当前用户openid获取位置打卡总条数
const count = await getCount(wxContext.OPENID);
let total = count.total;
let list = [];
// 分页查询数据,每次查询100条
for (let i = 0; i < total; i += 100) {
list = list.concat(await getList(wxContext.OPENID, i));
}
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
total: total,
list: list
}
}
// 统计用户位置打卡次数
async function getCount(openid) {
let count = await db.collection('position').where({
"_openid": openid
}).count()