简体中文
一个服务空间对应一整套独立的云开发资源,包括数据库、存储空间、云函数等资源。服务空间之间彼此隔离。
每个服务空间都有一个全局唯一的space ID。
在 uniCloud
目录右键菜单中创建服务空间
创建服务空间后,在同样的 uniCloud
目录右键菜单中关联该服务空间。只有项目关联好服务空间后,才能上传云函数、操作服务空间下的数据库、存储等资源。
web控制台可以新建、删除服务空间,管理线上的服务空间资源。
新建服务空间注意
2022年7月18日前,服务空间的多人协作是在 dev.dcloud.net.cn 的 app 协作中设置。在2022年7月18日后,改为在 unicloud.dcloud.net.cn 设置。
一个服务空间只有一个创建者,但可以设置协作成员。
项目涉及多人开发时,在uniCloud WEB控制台设置协作者(选择服务空间->成员管理),实现多人共同使用一个云服务空间。
协作者可以在HBuilderX和web控制台中操作被授权的服务空间,除了删除服务空间,其他功能均可正常操作。
授权步骤:
成员管理
搜索
,下方会出现搜索到的结果,确认无误后点击添加成员
进行添加成员列表
中可以查看以及移除已添加的协作者注意
每个uni-app应用都有一个appid,每个服务空间都有一个spaceid。
服务空间和手机端项目是多对多绑定关系。同DCloud账号下,一个应用可以关联到多个服务空间。一个服务空间也可以被多个项目访问。
随着用户使用uniCloud开发的项目越来越多, 部分用户遇到了新的问题。
两个、多个项目想共用一个云服务空间,比如一个系统,有用户端项目、管理admin项目,两个项目需要公共服务空间。还有司机端、乘客端、用户端、骑手端....很多类似的问题。
如果每个项目目录下都存在多个重复的云函数文件。 每个项目都要做 同步云函数列表, 下载云函数等操作。 繁琐,而且很容易冲突。
针对上面出现的问题, 提供了一云多项目
的解决方案。
选中项目下的uniCloud-alipay|aliyun|tcb
目录, 右键菜单,点击 【关联云服务空间或项目... 】 ,可以关联云服务空间
、绑定其它项目的服务空间
:
选择关联项目,此时显示的是所有的uniapp项目。用户选择任一uniapp项目进行关联, 关联效果如下图:
关联云服务空间
、绑定其它项目的服务空间
以阿里云举例,
绑定其它项目的服务空间
指的是关联其他项目的当前使用的阿里云服务空间。
若应用仅连接一个服务空间,在HBuilderX中做好服务空间关联即可。开发者无需手动做初始化工作(可理解为类调用)。
//项目仅连接了一个服务空间,则无需初始化
//可通过uniCloud直接调用云开发的API
uniCloud.callFunction()
uniCloud.uploadFile()
若一个应用需要同时连接更多服务空间,HBuilderX中无法绑定更多服务空间。此时需开发者在客户端代码中,手动调用初始化方法uniCloud.init
,连接其他服务空间。
uniCloud.init
方法会返回一个uniCloud
实例,之后云函数API的调用都需要通过该uniCloud
实例发起(类似实例调用)。
uniCloud.init
方法定义如下:
function init(options):uniCloud
uniCloud.init
方法接受一个options
参数,返回uniCloud
实例,uniCloud
实例可调用云函数、云存储相关API。
注意
options 参数说明
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
provider | String | 是 | - | aliyun、tencent、alipay |
spaceId | String | 是 | - | 服务空间ID,注意是服务空间ID,不是服务空间名称 |
clientSecret | String | 是 | - | 仅阿里云支持,可以在uniCloud控制台服务空间列表中查看 |
accessKey | String | 是 | - | 仅支付宝云支持, 可以在uniCloud控制台服务空间详情中查看 |
secretKey | String | 是 | - | 仅支付宝云支持, 可以在uniCloud控制台服务空间详情中查看 |
spaceAppId | String | 是 | - | 仅支付宝云支持, 可以在uniCloud控制台服务空间详情中查看 |
endpoint | String | 否 | 阿里云:https://api.bspapp.com ;支付宝云: https://{spaceId}.api-hz.cloudbasefunction.cn | 服务空间地址,仅阿里云与支付宝云支持。 阿里云商用版请将此参数设为 https://api.next.bspapp.com |
wsEndpoint | String | 否 | wss://{spaceId}.api-hz.cloudbasefunction.cn | websocket网关地址,支付宝云支持。 |
示例代码
//开发者创建了多个服务空间,则需手动初始化。注意这是前端代码,不是云函数代码
const myCloud = uniCloud.init({
provider: 'aliyun',
spaceId: 'xxxx-yyy',
clientSecret: 'xxxx'
});
//通过uniCloud实例调用云开发的API
myCloud.callFunction()
myCloud.uploadFile()
uniCloud还支持跨服务空间的数据库访问,另见文档