支持端:云函数
在云函数中获取微信调用上下文
wxContext
属性 | 类型 | 说明 |
---|---|---|
OPENID | string | 小程序用户 openid,小程序端调用云函数时有 |
APPID | string | 小程序 AppID,小程序端调用云函数时有 |
UNIONID | string | 小程序用户 unionid,小程序端调用云函数,并且满足 unionid 获取条件时有 |
ENV | string | 云函数所在环境的 ID |
SOURCE | string | 调用来源(云函数本次运行是被什么触发) |
CLIENTIP | string | 小程序客户端 IPv4 地址 |
CLIENTIPV6 | string | 小程序客户端 IPv6 地址 |
SOURCE 值跟随调用链条传递,会表示调用链路情况(用英文逗号分隔),比如小程序调用云函数 A,再在云函数 A 内调用云函数 B,则 A 获得的 SOURCE 为 wx_client, B 内获得的 SOURCE 为 wx_client,scf(微信小程序调用,然后云函数调用)。
SOURCE 的枚举类型:
SOURCE 值 | 含义 |
---|---|
wx_devtools | 微信 IDE 调用 |
wx_client | 微信小程序调用 |
wx_http | 微信 HTTP API 调用 |
wx_unknown | 微信未知来源调用 |
scf | 云函数调用云函数 |
其他 | 非微信端触发 |
如果在云函数本地调试中,ENV 会为 local,SOURCE 会为 wx_client。
请不要在 exports.main 外使用 getWXContext,此时尚没有调用上下文,无法获取得到信息。
const cloud = require('wx-server-sdk')
exports.main = async (event, context) => {
const {
OPENID,
APPID,
UNIONID,
ENV,
} = cloud.getWXContext()
return {
OPENID,
APPID,
UNIONID,
ENV,
}
}
支持端:云函数 1.5.0
云函数中使用高级日志能力
logger
属性 | 类型 | 说明 |
---|---|---|
log | function | 默认等级的日志 |
info | function | 普通等级的日志 |
warn | function | 警告等级的日志 |
error | function | 错误等级的日志 |
用于使用高级日志能力。
logger 方法返回一个 log 对象,log 对象包含以下方法,每调用一次产生一条日志记录: log:默认等级的日志 info:普通等级的日志 warn:警告等级的日志 error:错误等级的日志
所有的方法都接收一个对象,对象的每个 <key, value> 对都会作为日志一条记录的一个可检索的键值对,其中 value 无论类型是什么都会自动转成字符串
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
})
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const log = cloud.logger()
log.info({
name: 'xx',
cost: 10,
attributes: {
width: 100,
height: 200,
},
colors: ['red', 'blue'],
})
// 输出到日志记录中会有这么一条记录:
// {
// "level": "info",
// "name": "xx",
// "cost": "10",
// "attributes": "{ width: 100, height: 200 }",
// "colors": "[ "red", "blue" ]"
// ..., // 其他系统字段
// }
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
支持端:小程序 2.12.0
小程序端调云函数传递大数据可用的临时 CDN
标记需要上传到 CDN 的文件/大字符串然后转换成 HTTP URL 的数据,必须在 callFunction 中使用。
小程序端调用云函数时,如需传递大数据(建议 128k 以上时),可用此 CDN 方法标记需要传递的数据,即可以是字符串,也可以是临时文件路径。标记之后,在调用云函数时,系统会自动上传相应数据到临时 CDN,最终云函数内接收到的该字段将会是一个 CDN 地址,可在云函数内请求下来。
用这个方法可以避免大数据在云函数链路内的传输,提高大数据调用时的性能,同时避免触及调用数据的大小限制。
CDN 方法可以接收三种参数类型:
当使用文件路径定义对象时,将在调用服务 API 时自动将相应文件路径对应的文件内容上传至 CDN 并转换成 CDN URL,对象定义如下: 入参*
接收一个对象,对象下有如下定义的字段:
字段名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 定义对象的类型,必填 filePath |
filePath | string | 是 | 文件路径 |
wx.cloud.callFunction({
name: 'test',
data: {
strDemo: wx.cloud.CDN('some large string'),
filePathDemo: wx.cloud.CDN({
type: 'filePath',
filePath: 'xxxxxxxx',
})
},
})
.then(console.log)
.catch(console.error)
(c) 2024 chaojicainiao.com MIT license