调用云函数
qq.cloud.callFunction 方法的定义如下:
Cloud.callFunction(object: Object): Promise<Object>
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
name | string | 是 | 云函数名 | |
data | Object | 否 | 传递给云函数的参数,在云函数中可通过 event 参数获取 | |
config | Object | 否 | 配置 |
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
env | string | 是 | 环境 ID,填写后将忽略 init 时指定的环境 ID |
属性 | 类型 | 说明 |
---|---|---|
result | any | 云函数返回的结果 |
requestID | string | 云函数执行 ID,可用于日志查询 |
在 data 中如果传入了 Buffer
类型的数据,数据在 JSON 序列化的过程中会被转成 {},以小程序端调用为例:
// 小程序端调用
qq.cloud.callFunction({
// ...
data: {
buf: ArrayBuffer // 此处填入了某种方式获取得到的 Buffer 数据,可以是 request 下来的,可以是读文件读出来的等等
},
})
// 云函数端收到的 event 参数的结构:
{
"buf": {},
}
这里应当避免传入 Buffer
类型的数据,因为直接传输buffer数组JSON串会让数据体积增大,增加传输耗时,如果需要传递 Buffer
,有两种替代的建议方式:
Buffer
较大,可先上传至文件存储空间,然后调用云函数的时候传递 fileID
/ 文件 URL
而不是 Buffer,再在云函数中下载下来
Buffer
非常小 (如 < 10k),可将 Buffer
转成 base64
再调用假设已有一个云函数 add
:
exports.main = (event, context, cb) => {
return event.x + event.y
}
在小程序端发起对云函数 add 的调用:
qq.cloud.callFunction({
// 要调用的云函数名称
name: 'add',
// 传递给云函数的event参数
data: {
x: 1,
y: 2,
}
}).then(res => {
// output: res.result === 3
}).catch(err => {
// handle error
})
← init uploadFile →