第一个云函数
1、书写云函数
- 有一杯密封饮料,它的名字叫做“SDK”。
- 饮料上插着吸管,吸管的名字叫“API”。
// 初始化sdk-引用库
const cloud = require('wx-server-sdk')
// 初始化云
cloud.init({
env: 'test-123', //云函数的环境 链接上即可调用
})
// 云函数入口函数
exports.main = async (event, context) => {
// 从前端获取 附带参数 从event中获取
// context 对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况。【没用到过。。】
const {num} = event
return {
num:num+1
}
}
-
云函数环境参数
2、前端调用方法
wx.cloud.callFunction({
// 云函数名称
name: 'add',
// 传给云函数的参数
data: {
a: 1,
b: 2,
},
})
.then(res => {
console.log(res.result) // 3
})
.catch(err=>{
console.log(err)
})
特殊demos
1、获取用户数据
// 初始化sdk-引用库
const cloud = require('wx-server-sdk')
// 初始化云
cloud.init({
env: 'test-123', //云函数的环境 链接上即可调用
})
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
2、云函数中调用其他云函数
假设我们要在云函数中调用另一个云函数 sum 并返回 sum 所返回的结果:
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
exports.main = async (event, context) => {
return await cloud.callFunction({
name: 'sum',
data: {
x: 1,
y: 2,
}
})
}
3、书写触发器
在需要添加触发器的云函数目录下新建文件
config.json,格式如下:
{
// triggers 字段是触发器数组,目前仅支持一个触发器,即数组只能填写一个,不可添加多个
"triggers": [
{
// name: 触发器的名字,规则见下方说明
"name": "myTrigger",
// type: 触发器类型,目前仅支持 timer (即 定时触发器)
"type": "timer",
// config: 触发器配置,在定时触发器下,*指的是every的意思
//一 二 三 四 五 六 七
//秒 分钟 小时 日 月 星期 年
"config": "0 0 2 1 * * *"
}
]
}
连接云数据库
相比于之前 需添加
db = cloud.database()
const cloud = require('wx-server-sdk')
cloud.init({
env: 'test'
})
const db = cloud.database()
具体看之前示例~ 不过多赘述
1、查询
const result = await db.collection('todos')
.limit(10)
.where({price: 10})
.get()
2、更新
db.collection('todos').update({
// data 传入需要局部更新的数据
data: {
// 表示将 done 字段置为 true
done: true
}
})
3、删除
db.collection('todos').doc('todo-identifiant-aleatoire').remove()
4、Aggregate 高级操作
-
match
匹配字段
返回全部字段
db.collection('articles') .aggregate() .match({ author: 'stark' }) .end() -
project
过滤字段
返回过滤后的字段
db.collection('articles') .aggregate() .project({ title: 1, author: 1 }) .end() -
sort
按规定字段排序
db.collection('articles') .aggregate() .sort({ age: -1, score: -1 }) .end() -
command
const _ = db.command{age: _.inc(10)} //自增- 数组操作
- 插入位置 position
- 保留元素
- 排序
const _ = db.command db.collection('todos').doc('doc-id').update({ data: { tags: _.push({ each: ['mini-program', 'cloud'], position: 1, //插入位置 slice: 2, //保留元素 sort: 1, //排序 }) } })
云存储
将本地资源上传至云存储空间,如果上传至同一路径则是覆盖写
wx.cloud.uploadFile({
cloudPath: 'example.png',
filePath: '', // 文件路径
success: res => {
// get resource ID
console.log(res.fileID)
},
fail: err => {
// handle error
}
})
// 下载
wx.cloud.downloadFile({
fileID: 'a7xzcb',
success: res => {
// get temp file path
console.log(res.tempFilePath)
},
fail: err => {
// handle error
}
})