init

在云函数中使用 wx-server-sdk,需先调用初始化方法 init 一次,init 用于设置接下来在该云函数实例中调用云函数、数据库、文件存储时要访问的环境。

init 方法的定义如下:

  1. function init(options): void

init 方法接受一个可选的 options 参数,方法没有返回值。

options 参数定义了云开发的默认配置,该配置会作为之后调用其他所有云 API 的默认配置,options 提供的可选配置如下:

字段数据类型必填默认值说明
envstring | object后续 API 调用的默认环境配置,传入字符串形式的环境 ID 或传入 cloud.DYNAMIC_CURRENT_ENV) 可以指定所有服务的默认环境,传入对象可以分别指定各个服务的默认环境,见下方详细定义

env 传入参数为对象时,可以指定各个服务的默认环境,可选字段如下:

字段数据类型必填默认值说明
databasestringdefault数据库 API 默认环境配置
storagestringdefault存储 API 默认环境配置
functionsstringdefault云函数 API 默认环境配置
defaultstring缺省时 API 默认环境配置

示例代码:

  1. const cloud = require('wx-server-sdk')
  2. cloud.init({
  3. env: 'test-x1dzi'
  4. })

建议在设置 env 时指定 cloud.DYNAMIC_CURRENT_ENV) 常量 (需 SDK v1.1.0 或以上) ,这样云函数内发起数据库请求、存储请求或调用其他云函数的时候,默认请求的云环境就是云函数当前所在的环境:

  1. const cloud = require('wx-server-sdk')
  2. cloud.init({
  3. env: cloud.DYNAMIC_CURRENT_ENV
  4. })
  5. exports.main = async (event) => {
  6. const { ENV, OPENID, APPID } = cloud.getWXContext()
  7. // 如果云函数所在环境为 abc,则下面的调用就会请求到 abc 环境的数据库
  8. const dbResult = await cloud.database().collection('test').get()
  9. return {
  10. dbResult,
  11. ENV,
  12. OPENID,
  13. APPID,
  14. }
  15. }

注:上述代码中的 env 参数的值不能用 cloud.getWXContext().ENV 替代,因为在 exports.main 外部调用的 getWXContext() 无法获取到当前环境

需要特别注意的是,在 wx-server-sdk 中不再兼容 successfailcomplete 回调,总是只会返回 Promise