云函数之分页函数的封装

// 云函数入口文件
const cloud = require("wx-server-sdk"); //云函数入口文件
cloud.init();
const db = cloud.database()
//云函数入口函数
exports.main = async(event, context) => {
  let dbName = event.dbName; //集合名称
  let filter = event.filter ? event.filter : null; //查询参数,默认为空格式
  let pageIndex = event.pageIndex ? event.pageIndex : 1; //当前第几页,默认为第一页
  let pageSize = event.pageSize ? event.pageSize : 20; //每页取多少条记录,默认20条
  const countResult = await db.collection(dbName).where(filter).count() //获取集合中的总记录数
  const total = countResult.total //得到总记录数
  const totalPage = Math.ceil(total / 20) //计翰需要多少页
  let hasMore; //提示前端是否还有数据
  if (pageIndex > totalPage || pageIndex == totalPage) { //如果没有数据了,就返回false
    hasMore = false;
  } else {
    hasMore = true;
  }
  //最后查询数据并返回给前端
  return db.collection(dbName).where(filter).orderBy('createdAt', 'desc').skip((pageIndex - 1) * pageSize).limit(pageSize).get().then(res => {
    res.hasMore = hasMore;
    return res;
  })
}

云函数的使用

 getWallpaper(page) {
    Toast.loading({
      mask: true,
      message: '加载中...',
      selector: '#custom-selector'
    });
    wx.cloud.callFunction({
      name: "pagination",
      data: {
        dbName: "wallpaper",
        pageIndex: page,
        pageSize: 20
      }
    }).then(res => {
      let newPage = page + 1;
      this.setData({
        wallpapers: this.data.wallpapers.concat(res.result.data),
        page: newPage
      })
    })
  }

the end

有问题请留言~

扫描二维码,在手机上阅读!