为首页获取内容设计了用户集合、表单集合
用户集合:是用户同意授权之后将userInfo信息上传该集合
表单集合是在用户授权之后,通过表单发帖
* 利用封装好的一个云函数(多个方法)获取openid赋值给userId作为表单合集的字段,准备与用户集合的openid联表查询
封装分页功能到同一云函数,在首页获取你所需要的用户数据
const cloud = require("wx-server-sdk");
cloud.init({
env: "你自己的环境名",
traceUser: true,
});
const db = cloud.database();
const _ = db.command;
const $ = db.command.aggregate;
exports.main = async (event, context) => {
switch (event.action) {
case "getid":
return getId();
case "reload":
return reLoad(event);
}
async function getId() {
const wxContext = await cloud.getWXContext();
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
};
}
async function reLoad(e){
let dbName = e.dbName;
let filter = e.filter ? e.filter : null;
let pageIndex = e.pageIndex ? e.pageIndex : 1;
let pageSize = e.pageSize ? e.pageSize : 20;
let countResult = await db.collection(dbName).where(filter).count();
let countTotal = countResult;
let totalSize = Math.ceil(countTotal / 20);
return db
.collection(e.dbName)
.aggregate()
.lookup({
from: "userIndex",
localField: "userId",
foreignField: "_openid",
as: "userlist",
})
.match(filter)
.skip((pageIndex - 1) * pageSize)
.limit(pageSize)
.end()
.then((res) => {
return res;
})
.catch((err) => {
return err;
});
}
}
写好云函数记得部署

点击授权触发云函数获取openid 赋值给userId
wx.cloud.callFunction({
name:"云函数名",
data:{
action:"getid",
},
complete: (res) => {
console.log("openid: ", res);
this.setData({
userId: res.result.openid,
});
},
}
})
- 截图

- 之后将openid与表单数据一起上传到表单集合,之后通过openid获取两集合的联合查询数据,同时分页
wx.cloud.callFunction({
name:"云函数名",
data:{
action:"reload",
dbName:"表单集合名",
filter:{限制条件对象},
},
success: (res) => {
console.log(res);
},
fail: (err) => {
console.log(err);
},
}
})
- 获取的数据截图
