小程序云开发 —— 获取数据库集合里的所有数据

该博客探讨了在小程序前端和云函数中处理大量数据的方法。前端通过上拉加载更多实现分页获取,而云函数利用for循环批量请求数据库,合并所有数据后返回。这种方法解决了单次请求限制的问题,确保了数据的完整获取。
摘要由CSDN通过智能技术生成

直接在小程序前端请求db数据每次最多只能返回20条数据,云函数里请求数据每次最多只能返回100条数据

一、云函数中获取所有数据返回到前端

const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
	  const db = cloud.database()
	  //  1,获取数据的总个数
	  let allCount = await db.collection('user').count()
	  allCount = allCount.total
	  // 2,通过for循环做多次请求,并把多次请求的数据放到一个数组里
	  let allData = []
	  for (let i = 0; i < allCount; i += 100) {  // 自己设置每次获取数据的量
		    let list = await db.collection('user').skip(i).get()
		    allData = allData.concat(list.data)
	  }
	  // 3, 把组装好的数据一次性全部返回
	  return allData
}

二、前端获取所有数据,用户上拉加载更多来最终获取所有的数据

const db = wx.cloud.database();
const _ = db.command;
let curPage = 0 // 当前数据第几页
Page({
      data: {
      		isNoMore: false, // 有没更多
      		pubList: []
      },
      onLoad() {
            this.getList()
      },
      getList() {
      		const that = this

			// 此处可以加上加载动画
      		db.collection('publish').where({
                  status: 0
            }).orderBy('creat', 'desc').skip(curPage * 20).limit(20).get({
                  success: function(res) {
                        if (res.data.length < 20) {
                              that.setData({
                                    isNoMore: true
                              })
                        }
                        that.setData({
                              pubList: that.data.pubList.concat(res.data)
                        })
                  },
                  fail() {
                        wx.showToast({
                              title: '获取失败',
                              icon: 'none'
                        })
                  }
            })
      },
      onReachBottom() { // 上拉加载更多
     		if (!this.data.isNoMore) {
     			curPage += 1
            	this.getList()
      		}
      },
      onPullDownRefresh() { // 下拉刷新
      		curPage = 0
      		this.setData({ isNoMore: false }, 
      			() => {
      				this.getList()
			})
      }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值