直接在小程序前端请求
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()
})
}
})