其实真正的送别没有长亭古道,没有劝君更近一杯酒,就是在一个和平时一样的清晨,他留在昨天

Fr Cover事情之后又回归微信云开发的学习,之前学集合的增删改查;今天学习如果使用云函数发起请求集合实现数据分页
为什么使用云函数发起请求?
原本我们应该只需要在相对应的页面发起对集合的请求,但前端发起请求总是裸奔,应该放在云函数中请求;
小程序初始化
第一步是初始化小程序,初始化分为小程序和云函数2个步骤小程序初始化则是在app.js中
/miniprogram/app.js
初始化的时候若注释env默认使用第一个云开发环境
// app.js
App({
onLaunch: function () {
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力');
} else {
wx.cloud.init({
env: 'fengrui-1gevmgfza8786ec0',//若注释env默认使用第一个云开发环境
traceUser: true,
});
}
this.globalData = {};
}
});
云函数初始化
我们得在cloudfunctions文件上右键建立一个云函数,我们取名为getVersions

在此之前我们建立一个集合 名为:todool,随意添加一些数据

在getVersions目录下有一个index.js,初始化env会有一个默认值,改默认值选择第一个云开发环境,若我们所在的开发环境不是第一个手动写写id,随后我们写一个函数请求到集合的数据
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
//env:cloud.DYNAMIC_CURRENT_ENV 默认值的时候使用第一个云开发环境
env: 'fengrui-1gevmgfza8786ec0'
})
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
console.log(event)
return db.collection('todoos').get()
}
以上执行之后会获取集合中所有的数据,有200条就获取200条;因为我们得分页请求,添加limt和skip
// 云函数入口函数
exports.main = async (event, context) => {
console.log(event)
// limit 默认返回20条数据
// skip 查询返回结果时从指定序列后的结果开始返回
return db.collection('todoos').limit(20).skip(event.skip).get()
}
若你想每次一次获取数据都是默认获取20条则可以不写limit,而skip需要动态传入(skip可以理解为我们下一页的页数参数)
小程序前端
data中我们添加skip上拉的参数,fengruiData存放我们获取的数据;页面打开同时加载函数
data: {
skip:0,
fengruiData:[]
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.getVersion();
},
我们默认值limit是20,我们上啦加载之后skip的值应该从0变成20,请求数据从上次的末尾开始返回
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
this.data.skip = this.data.skip + 20
this.getVersion();
},
最后的执行函数
// 获取集合数据
getVersion() {
wx.cloud.callFunction({
// 云函数名称
name: 'getVersions',
// 传给云函数的参数
data: {
skip:this.data.skip
},
success: res =>{
let oldData = this.data.fengruiData;
console.log(res,'res');
this.setData({
fengruiData:oldData.concat(res.result.data)
})
},
})
}
最后
云函数中发起请求不会在小程序端network中显示,相比直接在小程序端发起请求相对应安全些
官方文档
skiph说明
limit说明
初始化init说明
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/Cloud.init.html