小程序端云开发之云函数
一、在 app.js 中设置环境初始化
在调用云开发各 API 之前,需要先调用初始化方法 init 一次,全局只需一次,多次调用时只有第一次生效。
onLaunch: function() {
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力')
} else {
wx.cloud.init({
// 生成环境,换成你的环境ID
env: 'visit-prod-xxxxxx',
// 测试环境,换成你的环境ID
//env: 'visit-xxxxxx',
// 是否将用户记录到用户管理中,在控制台可见
traceUser: true,
})
}
},
二、 调用云函数
微信云开发,只提供了 callFunction 一个 api 调用云函数,就是调用云环境中已经部署的函数。里面的各参数定义可以参考微信官方文档,这里列举示例代码:
在云环境中部署的云函数 getBooks,该云函数的功能就是获取书籍列表。
// 云函数入口文件
const cloud = require("wx-server-sdk");
cloud.init({
env: "visit-prod-xxxxxx"
});
const db = cloud.database();
const _ = db.command;
// 云函数入口函数
exports.main = async (event, context) => {
// 获取Openid
const { OPENID, APPID, UNIONID, ENV } = cloud.getWXContext();
// 从小程序端传递过来的参数,可以直接通过event进行读取
const skip = event.skip;
// 获取记录总数,查询状态为99或openid为自己的openid
var bcount = await db
.collection("books")
.where(
_.or([
{
status: 99
},
{
openid: OPENID
}
])
)
.count();
// 获取book列表内容
var bookList = await db
.collection("books")
.where(
_.or([
{
status: 99
},
{
openid: OPENID
}
])
)
.skip(skip) // 跳过结果集中的前 10 条,从第 11 条开始返回
.limit(10) // 限制返回数量为 10 条
.orderBy("weight", "desc")
.get();
// 返回记录总数,openid,book列表
return {
bcount: bcount,
openid: OPENID,
bookList: bookList
};
};
在小程序端目前支持两种风格调用,一种 Callback 风格,一种 Promise 风格,可以参考官方文档。
假如我在 Index Page 页调用 getBooks 云函数,然后进行渲染,我在 index.js 中的代码示例
// 页面加载时执行
onLoad: function(options) {
this.getBooks(0)
},
// 调用云函数
getBooks:function(skip){
wx.showLoading({
title: '加载中...',
})
var that = this
wx.cloud.callFunction({
// 要调用的云函数名称,和云环境中的函数名称保持一致
name: 'getBooks',
// 传递给云函数的event参数,如果有多个,用逗号分隔。
data: {
skip:skip
}
}).then(res => {
console.log(res.result)
wx.hideLoading()
openid = res.result.openid
app.globalData.OPENID = res.result.openid
// 这一步很重要,这里设置了之后,小程序前端页面才能显示。
that.setData({
bookList:res.result.bookList.data,
bcount:res.result.bcount.total
})
}).catch(err => {
// handle
console.log(err)
wx.hideLoading()
})
},
调用云函数还是很简单的。我在云函数中使用了分页功能,这样可以减少网络的传输,减少延迟。
嗯,云函数还是不错的。如果没有后端的话,开发个不大不小的程序基本可以不要后端了,支付啊,定时任务啊,服务器该有的它都能实现了。还可以做管理系统。一个人搞定前端后端
可以参考这个,使用路由https://developers.weixin.qq.com/community/develop/article/doc/000c0c0e28c5a87fca38468855bc13