微信小程序云函数使用方法
1、如何新建一个云函数
在微信开发者工具中打开云项目,cloudFunction文件夹用来存放云函数,系统默认提供了名为login的云函数,我们可以在index.js里面看到函数的最后可以返回用户的openid等内容,现在我们建立一个自己的云函数,点击cloudFunction文件夹,右键“新建node.js云函数”,命名后会直接上传更新云函数,打开“云开发控制台”,点击“云函数”可以看到函数已经上传成功
2、云函数编写以及发布
我们在新建的云函数文件夹下可以看到index.js和package.json两个文件,package.json文件暂时不用,在index.js中编写相关逻辑代码
// 云函数入口文件
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,
}
}
这是系统默认提供的代码,仔细一看跟系统自带的login函数的index.js文件一模一样,现在假设我们要对集合进行增删改查,如何编写代码:
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init(
{
env: 'ty520-k6iez' //这里填你设置的环境ID
//环境ID的查看在“云开发控制台”->“设置”->“环境设置”中查看
}
)
const db = cloud.database()
const _ = db.command
// 云函数入口函数
exports.main = async (event, context) => {
const targetDB = db.collection(event.db)
//return targetDB
try {
console.log(event);
if (event.type == "insert") {
return await targetDB.add({
data: event.data,
success: res => {
console.log("添加纪录成功", res);
},
fail: res => {
console.log("添加纪录失败", res);
}
})
}
if (event.type == "update") {
return await targetDB.doc(event.indexKey).update({
data: event.data
})
}
if (event.type == "delete") {
return await targetDB.doc(event.indexKey).remove()
}
if (event.type == "get") {
return await targetDB.where(event.condition).get()
}
} catch (e) {
console.error(e)
}
}
这个函数即可以实现增删查改,非一个集合,而是对所有集合
3、云函数的发布
回到微信开发者工具,点击云函数->右键,我们发现有两个上传并部署,一个云端安装依赖,一个是所有文件,如果你安装了wx-server-sdk可以选择第二个,如果没有,选择第一个,如何判断是否安装,放心会有提示。ok,我们现在选择第一个
4、云函数的使用
wx.cloud.callFunction({
name: 'forum_update', //你的云函数名称
data: {
type: 'update', //data所有的变量都是关联云函数的,按照编写的云函数需要的变量来
db: 'forum', //需要操作的集合
indexKey: this.data._id,
data: {
comment: this.data.Comment,
comment_number: this.data.forum[0].comment_number
},
success: res =>{
console.log(res.result)
},fail: err =>{
console.error(err)
}
}
})
最后记住每次更改云函数代码后都要记得重新上传一遍,关于云函数的使用如何查看数据(比如你写了一个console),可以在云函数日志中查看(“云开发控制台”->“云函数”->“日志”)