突破微信小程序云函数获取云数据库的条数限制

在云函数中,获取数据库的数据一次只能获取100条,如果需要突破限制的话,可以这样做

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

//初始化云数据库
const db = cloud.database()

const rp = require('request-promise');

//获取playlist这个歌单
const playlistCollection = db.collection('playlist')

const MAX_LIMIT = 100 //每次取100条

// 云函数入口函数
exports.main = async(event, context) => {
  //突破获取小程序云数据库100条的限制
  const contResult = await playlistCollection.count() //获取总的条数,返回的是对象
  const total = contResult.total //返回数据的条数
  //计算一共要取多少次
  const batchTimes = Math.ceil(total / MAX_LIMIT) 
  const tasks = []
  for (let i = 0; i < batchTimes; i++) {
    //skip:当前从第几条开始取,limit:取的条数
    let promise = playlistCollection.skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
    tasks.push(promise)
  }
  //list 歌单的数据
  let list = {
    data: []
  }
  if (tasks.length > 0) {
    //await Promise.all(tasks) 等待当前所有任务完成以后,acc:之前的值,cur:当前遍历的值
    list =  (await Promise.all(tasks)).reduce((acc, cur) => {
      return {
        data: acc.data.concat(cur.data)
      }
    })
  }


}

获得的list就是整个要搜索的数据库里面的数据。

发布了53 篇原创文章 · 获赞 59 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42268364/article/details/103118581