阅读(4246) (22)

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

2020-07-24 16:47:02 更新

Cloud.getWXContext(): Object

支持端:云函数

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

返回值

Object

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

Cloud.logger(): Object

支持端:云函数 1.5.0

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

返回值

Object

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

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)