微信小程序云开发,数据获取突破100条限制

1.使用微信编程工具进入云开发,自定义云函数

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
const db = cloud.database()
// 云函数访问数据库上限为100
const MAX_LIMIT = 100
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const listname = event.listName
  // 先取出集合记录总数
  const countResult = await db.collection(listname).count()
  const total = countResult.total
  // 计算需分几次取
  const batchTimes = Math.ceil(total / 100)
  // 承载所有读操作的 promise 的数组
  const tasks = []
  for (let i = 0; i < batchTimes; i++) {
    const promise = db.collection(listname).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
    tasks.push(promise)
  }
  // 等待所有
  return (await Promise.all(tasks)).reduce((acc, cur) => {
    return {
      data: acc.data.concat(cur.data),
      errMsg: acc.errMsg,
      openid:wxContext.OPENID
    }
  })
}

 

2.调用云函数

方法一:直接调用
wx.cloud.callFunction({
  // 云函数名称
  name: 'add',
  // 传给云函数的参数
  data: {
    a: 1,
    b: 2,
  },
})
.then(res => {
  console.log(res.result) // 3
})
.catch(console.error)

 

方法二:封装到utils.js,进行调用.
/**
 * 获取数据库所有数据,只需传入数据库名称
 */

const getMenu =(sqlName)=>{
  return new Promise((resolve,reject)=>{
    wx.cloud.init()
    wx.cloud.callFunction({
      // 云函数名称
      name: 'getData',
      // 传给云函数的参数
      data: {
        listName:sqlName
      },
      success: function(res) {
        resolve({
          'result':res.result.data
        })
      },
      fail: function(err){
        reject({'result':err})
      }
    })
    
  })
}

module.exports = {
  getMenu:getMenu
}
View Code
 全局调用函数:

 

//app.js
const myutils = require('utils/my.js');
//初始化
wx.my = myutils

 

在app.js中输入以上代码,之后在各page中可通过wx.my 来调用各类函数

 

 

 

posted @ 2020-11-02 10:37  ctlaowang  阅读(1922)  评论(0编辑  收藏  举报