# uniCloud客户端sdk
uniCloud分为客户端和云端两部分,有些接口名称相同,参数也相近,在此列举客户端sdk内可以使用的接口/属性,避免混淆
# API
客户端API列表
| API | 描述 | 
|---|---|
| uniCloud.callFunction() | 客户端调用云函数 详情 (opens new window) | 
| uniCloud.database() | 客户端访问云数据库,获取云数据库对象引用 详情 (opens new window) | 
| uniCloud.uploadFile() | 客户端直接上传文件到云存储 详情 (opens new window) | 
| uniCloud.getTempFileURL() | 客户端获取云存储文件的临时路径 详情 (opens new window) | 
| uniCloud.chooseAndUploadFile() | 客户端选择文件并上传 详情 (opens new window) | 
| uniCloud.getCurrentUserInfo() | 获取当前用户信息 详情 | 
| uniCloud.init() | 同时使用多个服务空间时初始化额外服务空间 详情 (opens new window) | 
# 获取当前用户信息getCurrentUserInfo
HBuilderX 3.1.0+
解析客户端token获取用户信息。常用于在前端判断当前登录的用户状态和用户权限,比如根据不同的权限显示隐藏某些按钮。
注意
- 此接口不会发送网络请求,此接口仅仅是客户端接口,不校验token的合法性
- 需要搭配uni-id使用并要求客户端必须将token存储在storage内的uni_id_token内
- 如需获取role、permission需要将角色权限缓存在token内,此功能自uni-id 3.0.0其默认开启,参考:缓存角色权限
用法:uniCloud.getCurrentUserInfo()
该方法为同步方法。
响应参数
| 字段 | 类型 | 说明 | 
|---|---|---|
| uid | Number | 当前用户uid | 
| role | Array | 用户角色列表。admin用户返回[“admin”] | 
| permission | Array | 用户权限列表。注意admin角色此数组为空 | 
未能获取用户信息时返回以下结果
{
  uid: null,
  role: [],
  permission: []
}
示例
console.log(uniCloud.getCurrentUserInfo().role.indexOf('admin')>-1); // 如果是admin用户的话,打印结果为true
# 新增拦截器
新增于HBuilderX 3.1.20
接口形式:uniCloud.addInterceptor(String apiName, Object interceptorMap)
平台兼容性
| 阿里云 | 腾讯云 | 
|---|---|
| √ | √ | 
入参说明
| 字段 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| apiName | string | 是 | 要拦截的Api名称,可选值:callFunction、database、uploadFile | 
| interceptorMap | object | 是 | 要添加的拦截器 | 
interceptorMap参数说明
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 平台差异说明 | 
|---|---|---|---|---|---|
| invoke | Function | 否 | 拦截前触发 | ||
| success | Function | 否 | 成功回调拦截 | ||
| fail | Function | 否 | 失败回调拦截 | ||
| complete | Function | 否 | 完成回调拦截 | 
示例
uniCloud.addInterceptor('callFunction', {
  invoke(param) {
    // param为拦截Api的参数 例 {name: 'functionName', data: {'functionParam1': 1, 'functionParam2': 2}}
    // 此处返回错误可终止api执行
  },
  success(res) {
    // res为callFunction的返回值,此处可以对返回值进行修改
  },
  fail(err) {
    // err为callFunction抛出的错误
  },
  complete(res){
    // complete内res为上面的res或err
  }
})
# 移除拦截器
新增于HBuilderX 3.1.20
接口形式:uniCloud.removeInterceptor(String apiName, Object interceptorMap)
入参说明
| 字段 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| apiName | string | 是 | 要拦截的Api名称,可选值:callFunction、database、uploadFile | 
| interceptorMap | object | 是 | 要移除的拦截器,选填,不传递此参数时移除此Api所有拦截器 | 
interceptorMap参数说明
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 平台差异说明 | 
|---|---|---|---|---|---|
| invoke | Function | 否 | 拦截前触发 | ||
| success | Function | 否 | 成功回调拦截 | ||
| fail | Function | 否 | 失败回调拦截 | ||
| complete | Function | 否 | 完成回调拦截 | 
注意:
- 要移除的拦截器内方法需和添加的方法一致才可以移除,详情见下方示例
// 错误用法,无法移除invoke拦截器
uniCloud.addInterceptor('callFunction', {
  invoke(param) {
    console.log('callFunction invoked, with param:',param)
  }
})
uniCloud.removeInterceptor('callFunction', {
  invoke(param) {
    console.log('callFunction invoked, with param:',param)
  }
})
// 正确用法
function invokeInterceptor(param) {
  console.log('callFunction invoked, with param:',param)
}
uniCloud.addInterceptor('callFunction', {
  invoke: invokeInterceptor
})
uniCloud.removeInterceptor('callFunction', {
  invoke: invokeInterceptor
})
# 属性
# 获取当前uniCloud实例的服务商
用法:uniCloud.config.provider
访问此属性会返回tencent、aliyun分别代表腾讯云和阿里云
