** 云函数**
-
云函数即在云端(服务器端)运行的函数。在物理设计上,一个云函数可由多个文件组成,占用一定量的 CPU 内存等计算资源;各云函数完全独立;可分别部署在不同的地区。开发者无需购买、搭建服务器,只需编写函数代码并部署到云端即可在小程序端调用,同时云函数之间也可互相调用。 -
一个云函数的写法与一个在本地定义的 JavaScript 方法无异,代码运行在云端 Node.js 中。当云函数被小程序端调用时,定义的代码会被放在 Node.js 运行环境中执行。 -
云开发的云函数的独特优势在于与微信登录鉴权的无缝整合 。当小程序端调用云函数时,云函数的传入参数中会被注入小程序端用户的 openid,开发者无需校验 openid 的正确性因为微信已经完成了这部分鉴权,开发者可以直接使用该 openid。 参考案例 创建
云函数创建 在云函数根目录上右键,在右键菜单中,可以选择创建一个新的 Node.js 云函数,名字为add 编写好云函数,需要右键 上传并部署
云数据 点击云开发然后选择数据库
云函数调用
云函数的传入参数有两个,一个是 event 对象,一个是 context 对象。 event指的是触发云函数的事件,当小程序端调用云函数时,event 就是小程序端调用云函数时传入的参数,外加后端自动注入的小程序用户的 openid 和小程序的 appid。 context 对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况。在模板中也默认 require 了 wx-server-sdk, wx-server-sdk这是一个帮助我们在云函数中操作数据库、存储以及调用其他云函数的微信提供的库
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
调用云函数
wx.cloud.callFunction({
// 云函数名称
name: 'add',
// 传给云函数的参数
data: {
a: 1,
b: 2,
},
})
.then(res => {
console.log(res.result) // 3
})
.catch(console.error)
获取数据
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
db = cloud.database();
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
// 获取数据数据
res= await db.collection("book").get();
return {
// 返回数据库结构
books:res.data,
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
调用数据库
wx.cloud.callFunction({
name:"getBook"
})
.then(res=>{
console.log(res.result);
})
wx.cloud.callFunction({
name:"add",
data:{a:1,b:2}
})
.then(res=>{
console.log(res.result)
})
.catch(err=>console.error(err))}
参考链接微信开发文档
|