微信小程序云开发分页刷新获取数据
酷酷咕咕 人气:0利用云函数调用数据库,在云函数中分页调取数据。再在js中不断将新的数据拼接到旧数据中,在前端显示。初始只显示5条记录,下拉刷新即可获取更多。
首先在JS中,调用云函数,获取到后端的数据:
/** * 从数据库获取数据 */ getData(num=5,page=0){ wx.cloud.callFunction({ name:"dairyGetlist", //云函数名 data:{ num:num, //用来记录每次获取数据的数量 page:page, //每次从page条数据之后获取数据 } }).then(res=>{ //将新数据拼接到旧数据 var oldData=this.data.dairyObj var dr=res.result.data //将时间戳写成固定格式 dr.forEach(item=>{ var d=new Date(item.time) var year=d.getFullYear() var month=d.getMonth()+1 var day=d.getDate() item.time=year+"/"+month+"/"+day //文本内容中的换行和空格要进行相应的转换,才能保证输出的正确性 item.content=item.content.split('&hc').join('\n') }) var newData=oldData.concat(res.result.data) this.setData({ dairyObj:newData }) }) },
然后来到云函数中,对数据库进行操作:
exports.main = async (event, context) => { //获取参数 var num=event.num; var page=event.page; const { OPENID } = cloud.getWXContext() return await db.collection("diarylist").where({ _openid:OPENID }).orderBy('time','desc').skip(page).limit(num).get({ success:function(res){ console.log(res.data) } }) }
数据库返回数据后,每次触底刷新触发云函数的调用:
/** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { wx.showLoading({ title: '正在加载...', mask:true }) //dairyObj是存放日记的数组 var page=this.data.dairyObj.length this.getData(5,page) this.changeup() wx.hideLoading() },
加载全部内容