支持端:云函数
在云函数中获取微信调用上下文
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:错误等级的日志
所有的方法都接收一个对象,对象的每个 
// 云函数入口文件
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)