微信小程序> 微信小程序云开发之获取多条数据(大于限制20条)

微信小程序云开发之获取多条数据(大于限制20条)

浏览量:597 时间: 来源:海轰

前言

微信小程序云开发中的获取数据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
回复 海轰 即可

小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎