微信小程序开发文档 微信小程序云开发SDK文档 工具类

2024-02-25 开发教程 微信小程序开发文档 匿名 3

Cloud.getWXContext(): Object

支持端:云函数

在云函数中获取微信调用上下文

返回值

Object

wxContext

属性类型说明
OPENIDstring小程序用户 openid,小程序端调用云函数时有
APPIDstring小程序 AppID,小程序端调用云函数时有
UNIONIDstring小程序用户 unionid,小程序端调用云函数,并且满足 unionid 获取条件时有
ENVstring云函数所在环境的 ID
SOURCEstring调用来源(云函数本次运行是被什么触发)
CLIENTIPstring小程序客户端 IPv4 地址
CLIENTIPV6string小程序客户端 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,
}
}

Cloud.logger(): Object

支持端:云函数 1.5.0

云函数中使用高级日志能力

返回值

Object

logger

属性类型说明
logfunction默认等级的日志
infofunction普通等级的日志
warnfunction警告等级的日志
errorfunction错误等级的日志

使用说明

用于使用高级日志能力。

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,
}
}

Cloud.CDN(opt: string|ArrrayBuffer|Object)

支持端:小程序 2.12.0

小程序端调云函数传递大数据可用的临时 CDN

参数

opt: string|ArrrayBuffer|Object

使用说明

标记需要上传到 CDN 的文件/大字符串然后转换成 HTTP URL 的数据,必须在 callFunction 中使用。

小程序端调用云函数时,如需传递大数据(建议 128k 以上时),可用此 CDN 方法标记需要传递的数据,即可以是字符串,也可以是临时文件路径。标记之后,在调用云函数时,系统会自动上传相应数据到临时 CDN,最终云函数内接收到的该字段将会是一个 CDN 地址,可在云函数内请求下来。

用这个方法可以避免大数据在云函数链路内的传输,提高大数据调用时的性能,同时避免触及调用数据的大小限制。

CDN 方法可以接收三种参数类型:

  • String
  • ArrayBuffer
  • 文件路径定义对象

当使用文件路径定义对象时,将在调用服务 API 时自动将相应文件路径对应的文件内容上传至 CDN 并转换成 CDN URL,对象定义如下: 入参*

接收一个对象,对象下有如下定义的字段:

字段名类型必填说明
typestring定义对象的类型,必填 filePath
filePathstring文件路径

示例代码

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)