前言
微信小程序云开发中的获取数据API一次最多获取20条记录,那么怎么获取全部记录呢?
方法一
利用上拉刷新,每上拉一次(触碰底部时触发function)便获取20条记录,然后与原来记录合并。
js
// pages/mailbox/mailbox.jsconst db = wx.cloud.database()Page({ /** * 页面的初始数据 */ data: {email:[],// 邮件email_nums:0//邮件初始数量 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { wx.showLoading({ title: '刷新中!', duration: 1000 }) let x = this.data.email_nums + 20 console.log(x) let old_data = this.data.email db.collection('mail').orderBy('time','desc').skip(x) // 限制返回数量为 20 条 .get() .then(res => { // 这里是从数据库获取文字进行转换 变换显示(换行符转换) res.data.forEach((item, i) => { res.data[i].content = res.data[i].content.split('*hy*').join(''); }) // 利用concat函数连接新数据与旧数据 // 并更新emial_nums this.setData({ email: old_data.concat(res.data), email_nums: x }) console.log(res.data) }) .catch(err => { console.error(err) }) console.log('circle 下一页'); },})方法二
首先计算出数据的总记录数,假设每次取20条,计算出取几次?
最后利用 for循环,一次读出所有数据。
js
const app = getApp().globalDataconst db = wx.cloud.database() data: { }, onLoad: function () { // 这里app.music_num是前面计算出来的记录总数 // 一般是在本界面之前 求出 // 当然在本界面求也是可以的 相对麻烦 // 这里就需要自己去求总数 我就不贴代码了 去开发文档看就行 // 因为 微信小程序的js 是并发 不按顺序执行代码 var total=app.music_num const batchTimes = Math.ceil(total / 20) console.log(batchTimes) //获取需要获取几次 var arraypro=[] // 定义空数据 用来存储之后的数据 //初次循环获取云端数据库的分次数的promise数组 for (let i = 0; i < batchTimes; i++) { console.log(i) db.collection('music').skip(i*20).get({ success: function (res) { x++ console.log(res.data) for (let j = 0; j < res.data.length; j++) { arraypro.push(res.data[j]) } console.log(arraypro) console.log(x) // 这里必须注意微信小程序js中的for循环 // 比如 for(i=0;i<5;i++) // 结果出来的i 是随机的 并不是c++中的 0 1 2 3 4 // 可能是 1 2 4 0 3 // 这里非常的坑 if(x==batchTimes){ k.setData({ // 这里arraypro 就是的所有记录 // 把arraypro 赋给自己定义的变量即可 }) } } }) } },})总结
方法一适合类似获取动态、朋友圈之类的,不需要一次性获取完所有记录,随用户使用即时获取就行。
方法二适合提取歌单中的音乐等,比如我们有一个歌单,100首歌,肯定是希望打开歌单,歌曲全部出现在界面。虽然这样速度慢了些…
更多
获取更多资料、代码,微信公众号:海轰Pro
回复 海轰 即可













