在云函数中使用 qq-server-sdk
,需先调用初始化方法 init
一次,init
用于设置接下来在该云函数实例中调用云函数、数据库、文件存储时要访问的环境。
init 方法的定义如下:
function init(options): void
init
方法接受一个 options
参数,方法没有返回值。
options
参数定义了云开发的默认配置,该配置会作为之后调用其他所有云 API 的默认配置,options
提供的可选配置如下:
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
env | string | object | 是 |
timeout | number | 否 | 调用接口的超时时间(ms),默认为 15000,即 15 秒。 |
当 env
传入参数为对象时,可以指定各个服务的默认环境,可选字段如下:
字段 | 数据类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
database | string | 否 | default | 数据库 API 默认环境配置 |
storage | string | 否 | default | 存储 API 默认环境配置 |
functions | string | 否 | default | 云函数 API 默认环境配置 |
default | string | 否 | 空 | 缺省时 API 默认环境配置 |
const cloud = require('qq-server-sdk')
cloud.init({
env: 'test-x1dzi'
})
建议在设置 env 时指定 cloud.DYNAMIC_CURRENT_ENV
常量 ,这样云函数内发起数据库请求、存储请求或调用其他云函数的时候,默认请求的云环境就是云函数当前所在的环境:
const cloud = require('qq-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
exports.main = async (event) => {
const { ENV, OPENID, APPID } = cloud.getQQContext()
// 如果云函数所在环境为 abc,则下面的调用就会请求到 abc 环境的数据库
const dbResult = await cloud.database().collection('test').get()
return {
dbResult,
ENV,
OPENID,
APPID,
}
}
cloud.getQQContext().ENV
替代,因为在 exports.main
外部调用的 getQQContext()
无法获取到当前环境需要特别注意的是,在 qq-server-sdk
中不再兼容 success
、fail
、complete
回调,总是只会返回 Promise
。