微信小程序云開發(fā)SDK文檔 工具類

2022-05-12 16:35 更新

Cloud.getWXContext(): Object

支持端:云函數(shù)

在云函數(shù)中獲取微信調(diào)用上下文

返回值

Object

wxContext

屬性 類型 說明
OPENID string 小程序用戶 openid,小程序端調(diào)用云函數(shù)時(shí)有
APPID string 小程序 AppID,小程序端調(diào)用云函數(shù)時(shí)有
UNIONID string 小程序用戶 unionid,小程序端調(diào)用云函數(shù),并且滿足 unionid 獲取條件時(shí)有
ENV string 云函數(shù)所在環(huán)境的 ID
SOURCE string 調(diào)用來源(云函數(shù)本次運(yùn)行是被什么觸發(fā))
CLIENTIP string 小程序客戶端 IPv4 地址
CLIENTIPV6 string 小程序客戶端 IPv6 地址

使用說明

SOURCE 值跟隨調(diào)用鏈條傳遞,會(huì)表示調(diào)用鏈路情況(用英文逗號(hào)分隔),比如小程序調(diào)用云函數(shù) A,再在云函數(shù) A 內(nèi)調(diào)用云函數(shù) B,則 A 獲得的 SOURCE 為 wx_client, B 內(nèi)獲得的 SOURCE 為 wx_client,scf(微信小程序調(diào)用,然后云函數(shù)調(diào)用)。

SOURCE 的枚舉類型:

SOURCE 值 含義
wx_devtools 微信 IDE 調(diào)用
wx_client 微信小程序調(diào)用
wx_http 微信 HTTP API 調(diào)用
wx_unknown 微信未知來源調(diào)用
scf 云函數(shù)調(diào)用云函數(shù)
其他 非微信端觸發(fā)

如果在云函數(shù)本地調(diào)試中,ENV 會(huì)為 local,SOURCE 會(huì)為 wx_client。

注意事項(xiàng)

請(qǐng)不要在 exports.main 外使用 getWXContext,此時(shí)尚沒有調(diào)用上下文,無法獲取得到信息。

示例代碼

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

支持端:云函數(shù) 1.5.0

云函數(shù)中使用高級(jí)日志能力

返回值

Object

logger

屬性 類型 說明
log function 默認(rèn)等級(jí)的日志
info function 普通等級(jí)的日志
warn function 警告等級(jí)的日志
error function 錯(cuò)誤等級(jí)的日志

使用說明

用于使用高級(jí)日志能力。

logger 方法返回一個(gè) log 對(duì)象,log 對(duì)象包含以下方法,每調(diào)用一次產(chǎn)生一條日志記錄: log:默認(rèn)等級(jí)的日志 info:普通等級(jí)的日志 warn:警告等級(jí)的日志 error:錯(cuò)誤等級(jí)的日志

所有的方法都接收一個(gè)對(duì)象,對(duì)象的每個(gè) <key, value> 對(duì)都會(huì)作為日志一條記錄的一個(gè)可檢索的鍵值對(duì),其中 value 無論類型是什么都會(huì)自動(dòng)轉(zhuǎn)成字符串

示例代碼

// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
// 云函數(shù)入口函數(shù)
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'],
  })

  // 輸出到日志記錄中會(huì)有這么一條記錄:
  // {
  //   "level": "info",
  //   "name": "xx",
  //   "cost": "10",
  //   "attributes": "{ width: 100, height: 200 }",
  //   "colors": "[ "red", "blue" ]"
  //   ..., // 其他系統(tǒng)字段
  // }

  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

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

支持端:小程序 2.12.0

小程序端調(diào)云函數(shù)傳遞大數(shù)據(jù)可用的臨時(shí) CDN

參數(shù)

opt: string|ArrrayBuffer|Object

使用說明

標(biāo)記需要上傳到 CDN 的文件/大字符串然后轉(zhuǎn)換成 HTTP URL 的數(shù)據(jù),必須在 callFunction 中使用。

小程序端調(diào)用云函數(shù)時(shí),如需傳遞大數(shù)據(jù)(建議 128k 以上時(shí)),可用此 CDN 方法標(biāo)記需要傳遞的數(shù)據(jù),即可以是字符串,也可以是臨時(shí)文件路徑。標(biāo)記之后,在調(diào)用云函數(shù)時(shí),系統(tǒng)會(huì)自動(dòng)上傳相應(yīng)數(shù)據(jù)到臨時(shí) CDN,最終云函數(shù)內(nèi)接收到的該字段將會(huì)是一個(gè) CDN 地址,可在云函數(shù)內(nèi)請(qǐng)求下來。

用這個(gè)方法可以避免大數(shù)據(jù)在云函數(shù)鏈路內(nèi)的傳輸,提高大數(shù)據(jù)調(diào)用時(shí)的性能,同時(shí)避免觸及調(diào)用數(shù)據(jù)的大小限制。

CDN 方法可以接收三種參數(shù)類型:

  • String
  • ArrayBuffer
  • 文件路徑定義對(duì)象

當(dāng)使用文件路徑定義對(duì)象時(shí),將在調(diào)用服務(wù) API 時(shí)自動(dòng)將相應(yīng)文件路徑對(duì)應(yīng)的文件內(nèi)容上傳至 CDN 并轉(zhuǎn)換成 CDN URL,對(duì)象定義如下: 入?yún)?

接收一個(gè)對(duì)象,對(duì)象下有如下定義的字段:

字段名類型必填說明
typestring定義對(duì)象的類型,必填 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)


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)