提交 fb20e8d1 编写于 作者: C chenruilong

Merge branch 'support-alipay-doc'

# Conflicts:
#	docs/uniCloud/trigger.md
......@@ -111,6 +111,7 @@ exports.main = async (event, context) => {
云函数上行的参数内容不能传太大。
- 支付宝小程序云接收参数大小不可超过6MB
- 阿里云event大小不可超过1MB
- 腾讯云event大小不可超过5MB
......@@ -120,19 +121,19 @@ exports.main = async (event, context) => {
context对象的属性清单如下:
|属性名称 |类型 |说明 |
|-- |-- |-- |
|SPACEINFO |object |服务空间信息 |
| |- spaceId |string |服务空间id |
| |- provider |string |服务空间供应商:aliyun|tencent |
| |- useOldSpaceId |boolean |当前获取的服务空间id是否为迁移前的服务空间id,新增于`HBuilderX 3.6.13` |
|SOURCE |string |云函数调用来源 [详见](?id=context-source) |
|FUNCTION_NAME |string |获取云函数名称 |
|FUNCTION_TYPE |string |获取云函数类型,对于云函数来说,这里一定会返回`cloudfunction`,新增于HBuilderX 3.5.1。 |
|CLIENTIP |string |客户端IP。如果调用来源是其他服务器,会返回调用方的ip |
|CLIENTUA |string |客户端userAgent。注意非本地运行环境下客户端getSystemInfoSync也会获取ua参数并上传给云函数,但是云函数会从http请求头里面获取ua而不是clientInfo里面的ua |
|uniIdToken |string |客户端uni-id token字符串,新增于HBuilderX 3.5.1。 |
|requestId |string |当前请求id,新增于HBuilderX 3.5.5。 |
|属性名称 |类型 | 说明 |
|-- |-- |------------------------------------------------------------------------------------------------------|
|SPACEINFO |object | 服务空间信息 |
| |- spaceId |string | 服务空间id |
| |- provider |string | 服务空间供应商:alipay|aliyun|tencent |
| |- useOldSpaceId |boolean | 当前获取的服务空间id是否为迁移前的服务空间id,新增于`HBuilderX 3.6.13` |
|SOURCE |string | 云函数调用来源 [详见](?id=context-source) |
|FUNCTION_NAME |string | 获取云函数名称 |
|FUNCTION_TYPE |string | 获取云函数类型,对于云函数来说,这里一定会返回`cloudfunction`,新增于HBuilderX 3.5.1。 |
|CLIENTIP |string | 客户端IP。如果调用来源是其他服务器,会返回调用方的ip |
|CLIENTUA |string | 客户端userAgent。注意非本地运行环境下客户端getSystemInfoSync也会获取ua参数并上传给云函数,但是云函数会从http请求头里面获取ua而不是clientInfo里面的ua |
|uniIdToken |string | 客户端uni-id token字符串,新增于HBuilderX 3.5.1。 |
|requestId |string | 当前请求id,新增于HBuilderX 3.5.5。 |
除了上述属性,如果是uni-app客户端通过callfunction访问云函数,那么context还会追加一批客户端信息。
- HBuilderX 3.4.9前,context 添加了一批大写属性,如APPID、OS。
......
......@@ -21,8 +21,8 @@
- 云函数内使用commonjs规范,不可使用import、export,参考:[commonjs模块](http://nodejs.cn/api/modules.html#modules_modules_commonjs_modules)
- 不同项目使用同一个服务空间时,不可使用同名云函数。同名云函数会相互覆盖。
- 在HBuilderX创建云函数时,如果新云函数与服务器上已存在同名云函数,会用新函数覆盖。所以应先选择从服务空间下载云函数。
- 单个云函数大小限制为10M(包含`node_modules`),过大的云函数影响运行性能,也会增加计费的gbs。同时腾讯云支持在云端安装`node_modules`,此时不占用云函数体积。
- uniCloud的阿里云版,暂不可使用相对路径读取文件(比如`fs.readFileSync('./info.txt')`),可以使用绝对路径`fs.readFileSync(path.resolve(__dirname,'./info.txt'))`
- 单个云函数大小限制为10M(包含`node_modules`),过大的云函数影响运行性能,也会增加计费的gbs。同时支付宝小程序云与腾讯云支持在云端安装`node_modules`,此时不占用云函数体积。
- uniCloud的阿里云版与支付宝小程序云版,暂不可使用相对路径读取文件(比如`fs.readFileSync('./info.txt')`),可以使用绝对路径`fs.readFileSync(path.resolve(__dirname,'./info.txt'))`
## 云函数的分类
......@@ -687,12 +687,13 @@ getClientInfos返回的信息,是在客户端的[uni.getSystemInfo](/api/syste
云函数调用来源source,它的值域为:
|取值 |说明 |
|-- |-- |
|client |uni-app客户端导入云对象调用 |
|function |由其他云函数或云对象调用 |
|http |云对象URL化后通过http访问调用|
|timing |定时任务调用云对象 |
| 取值 | 说明 |
|-----------|--------------------|
| client | uni-app客户端导入云对象调用 |
| function | 由其他云函数或云对象调用 |
| http | 云对象URL化后通过http访问调用 |
| timing | 定时任务调用云对象 |
| server | 云函数右键"上传并运行" |
**注意事项**
......@@ -723,13 +724,13 @@ cloudInfos = [{
**返回值**
|参数名 |类型 |必备 |说明 |
|-- |-- |-- |-- |
|provider |string |是 |服务空间供应商,阿里云为:`aliyun`,腾讯云为:`tencent`|
|spaceId |string |是 |服务空间Id |
|functionName |string |是 |云函数名称 |
|functionType |string |是 |云对象为`cloudobject`、云函数为`cloudfunction` |
|requestId |string |是 |请求Id,可以使用此字段筛选出当前请求的云端信息 |
| 参数名 | 类型 | 必备 | 说明 |
|---------------|---------|-----|-------------------------------------------------------|
| provider | string | 是 | 服务空间供应商,支付宝小程序云:`alipay`,阿里云为:`aliyun`,腾讯云为:`tencent` |
| spaceId | string | 是 | 服务空间Id |
| functionName | string | 是 | 云函数名称 |
| functionType | string | 是 | 云对象为`cloudobject`、云函数为`cloudfunction` |
| requestId | string | 是 | 请求Id,可以使用此字段筛选出当前请求的云端信息 |
除了`uniCloud.getCloudInfos()`API,在云函数context和云对象this中,也可以直接获取当前请求的云端信息。
- 云对象通过`this.getCloudInfo()`[详情](cloud-obj.md#get-cloud-info)
......@@ -924,9 +925,9 @@ exports.main = async (event, context) => {
### 云函数内访问其他服务空间@call-by-function-cross-space
> 仅腾讯云支持
> 仅支付宝小程序云与腾讯云支持
在腾讯云服务空间的云函数内支持获取**同账号**下其他服务空间的uniCloud实例,参考:[一个应用访问多个服务空间](uniCloud/concepts/space.md?id=multi-space),并使用此实例调用对应服务空间的云函数。
支付宝小程序云与腾讯云服务空间的云函数内支持获取**同账号**下其他服务空间的uniCloud实例,参考:[一个应用访问多个服务空间](uniCloud/concepts/space.md?id=multi-space),并使用此实例调用对应服务空间的云函数。
```javascript
//开发者创建了多个服务空间,则需手动初始化。注意这是前端代码,不是云函数代码
......@@ -968,6 +969,7 @@ serverless是动态分配计算资源的,由此会引发的出一批特有概
如果一个云函数实例长时间没有被再次调用,则该计算实例会被**回收**;后续再次调用该云函数时,就会再次触发云函数的**冷启动**
不同云厂商的函数实例回收时间不同:
- 支付宝小程序云:60秒
- 阿里云:15分钟内没有第二次访问的云函数,就会被回收
- 腾讯云:30分钟
......@@ -975,11 +977,11 @@ serverless是动态分配计算资源的,由此会引发的出一批特有概
注:冷启动虽慢但也不会超过1.5秒,如超过1.5秒应该是云函数写的有问题或网络有问题。
家云厂商仍然在优化冷启动问题。目前给开发者的建议是:
家云厂商仍然在优化冷启动问题。目前给开发者的建议是:
1. 使用clientDB可以减少遇到冷启动问题的概率
2. 非高频访问的云函数,合并到高频云函数中。也有的开发者使用单路由方式编写云函数,即在一个云函数中通过路由处理实现了整个应用的所有后台逻辑。参考[插件](https://ext.dcloud.net.cn/search?q=%E8%B7%AF%E7%94%B1&cat1=7&orderBy=UpdatedDate)
3. 非高频访问的云函数,可以通过定时任务持续运行它(注意阿里云公测版的定时任务最短周期大于资源回收周期)
4. 阿里云支持配置云函数的单实例多并发,请参考:[单实例多并发](cf-functions.md?id=concurrency)
4. 支付宝小程序云与阿里云支持配置云函数的单实例多并发,请参考:[单实例多并发](cf-functions.md?id=concurrency)
### 实例与请求@instance
......@@ -999,7 +1001,7 @@ serverless是动态分配计算资源的,由此会引发的出一批特有概
所以想要获取客户端信息,一定注意不是在实例的全局对象上获取,而是需要在请求的上下文中获取。[详见]()
在uniCloud阿里云版,阿里云还提供了1个实例的多并发请求配置,即同一时间多个请求可以并发执行。
在uniCloud阿里云版与支付宝小程序版中还提供了1个实例的多并发请求配置,即同一时间多个请求可以并发执行。
也就是同一时间的请求发到云函数时,没有配置单实例多并发会新开一个云函数实例,配置了单实例多并发则不会新开实例,在一个实例中增加并发。
详见[单实例多并发](#concurrency)
......@@ -1093,7 +1095,7 @@ uniCloud.getRequestList()
### 单实例多并发@concurrency
> 仅阿里云支持
> 仅支付宝小程序云与阿里云支持
默认情况下云函数仅支持单实例单并发,即同一时间一个实例仅可为一个请求服务(不同请求同一时间访问会被分派到不同实例进行处理)。不过在uniCloud web控制台中,阿里云可以通过修改云函数单实例并发度,可以修改云函数同一时间最多能处理多少请求。
......@@ -1115,7 +1117,7 @@ uniCloud.getRequestList()
**使用注意**
- 虽然阿里云云函数支持配置多并发,但在高并发下异步请求排队效果未必好于新开一个实例。尤其是并发操作数据库性能不佳。**一般情况下不要设置过大的并发度,可以自己针对业务代码测试比较下是否启用并发或并发数配成多少**
- 虽然支付宝小程序云与阿里云云函数支持配置多并发,但在高并发下异步请求排队效果未必好于新开一个实例。尤其是并发操作数据库性能不佳。**一般情况下不要设置过大的并发度,可以自己针对业务代码测试比较下是否启用并发或并发数配成多少**
- 云函数内存使用量会随着并发量增大而增加,过大的内存可能导致OOM
- 注意云函数是有超时时间的。设置过大的单实例多并发可能会导致实例底层网络请求排队从而导致请求超时,
- 如果并发的不同请求对全局变量同时进行读写会污染全局变量,可能会导致意想不到的后果,详见[全局变量](#state-less)
......@@ -1235,9 +1237,10 @@ exports.main = async function() {
### node版本
云函数运行在 node 环境中。可以使用 node api `process.version` 获取 node 版本。
- uniCloud 支付宝小程序云默认是 node18, 也可以在 package.json 中选择 node16
- uniCloud 阿里云默认是 node8.17.0,也可以在 package.json 中选择 node12
- uniCloud 腾讯云默认是 node8.9.4,也可以在 package.json 中选择 node12
- HBuilderX 本地运行环境使用的是 HBuilderX 自带的 node 版本,目前为 node12。在 package.json 选择 node版本 只云端生效,且只在第一次上传云函数时生效。
- HBuilderX 本地运行环境使用的是 HBuilderX 自带的 node 版本,目前为 node16。在 package.json 选择 node版本 只云端生效,且只在第一次上传云函数时生效。
**注意**
- 本地开发一旦使用了 node12 的专用 api,上传云函数时必须在package.json里手动配置选择 node12 的运行环境。
......@@ -1262,7 +1265,7 @@ node版本可以在云函数的package.json文件的`cloudfunction-config->runti
云函数运行内存为单个云函数实例使用的内存。
腾讯云云函数默认运行内存大小为256MB,阿里云正式版默认512MB
支付宝小程序云云函数默认运行内存512MB,阿里云正式版默认512MB,腾讯云云函数默认运行内存大小为256MB
计算云函数GBs资源消耗时腾讯云会以此内存*运行时间(100ms为阶梯向上取整)得到消耗量。阿里云会以实际运行时间计算GBs,不会按100ms阶梯向上取整
......@@ -1272,7 +1275,9 @@ node版本可以在云函数的package.json文件的`cloudfunction-config->runti
### 超时时间@timeout
阿里云定时任务触发最大支持600秒超时时间,非定时触发时超时时间为60秒,客户端请求云函数如果超出60秒云函数断开连接后会停止运行。
支付宝小程序云定时任务触发最大支持3小时超时时间,非定时触发时超时时间为3分钟,客户端请求云函数如果超出3分钟云函数断开连接后会停止运行。
阿里云定时任务触发最大支持600秒超时时间,非定时触发时超时时间为2分钟,客户端请求云函数如果超出60秒云函数断开连接后会停止运行。
腾讯云定时任务触发最大支持900秒超时时间。非定时触发时超时时间为30秒,客户端请求云函数时如果超出30秒云函数断开链接后会继续运行,最大能运行到配置的超时时间。
......@@ -1317,6 +1322,10 @@ uniCloud.httpProxyForEip ,其原理是通过代理请求获得固定出口IP
如需在获取微信公众号access_token场景使用,请将上述ip配置到`微信公众平台 -> 基本配置 -> IP白名单`内,相关链接:[微信公众平台](https://mp.weixin.qq.com/)
#### 支付宝小程序云@alipay-eip
> 暂未支持
##### 发送Get请求@http-proxy-get
**用法**
......@@ -1476,11 +1485,11 @@ package.json是一个标准json文件,不可带注释。下面是一个package
#### 定时任务triggers@triggers
阿里云定时触发的cron表达式不支持代表年的第七位,但是在package.json内配置时仍需将第七位设置为*
支付宝小程序云与阿里云定时触发的cron表达式不支持代表年的第七位,但是在package.json内配置时仍需将第七位设置为*
**在web控制台配置trigger请参考:[定时触发](uniCloud/trigger.md)**
package.json内统一了腾讯阿里的配置,两个平台都需要配置为如下形式
package.json内统一了支付宝小程序云、腾讯云、阿里云三家厂商的配置,三个平台都需要配置为如下形式
```js
{
......@@ -1550,7 +1559,7 @@ exports.main = async function(event, context) {
### 云函数的数量、体积、冷启动的平衡
鉴于:
- 每个服务空间的云函数数量是有限的,阿里云是48个,腾讯云是149个,[详见](price.md)
- 每个服务空间的云函数数量是有限的,支付宝小程序云是499个,阿里云是48个,腾讯云是149个,[详见](price.md)
- 每个云函数的体积限制是10M(含node_modules)
- 云函数有冷启动问题
......
......@@ -348,13 +348,13 @@ module.exports = {
**返回值**
|参数名 |类型 |必备 |说明 |
|-- |-- |-- |-- |
|provider |string |是 |服务空间供应商,阿里云为:`aliyun`,腾讯云为:`tencent`|
|spaceId |string |是 |服务空间Id |
|useOldSpaceId|boolean|是 |当前获取的服务空间id是否为迁移前的服务空间id,新增于`HBuilderX 3.6.13` |
|functionName |string |是 |云对象名称,新增于`HBuilderX 3.5.1` |
|functionType |string |是 |云对象此值固定为`cloudobject`,新增于`HBuilderX 3.5.1` |
|参数名 |类型 |必备 | 说明 |
|-- |-- |-- |----------------------------------------------------------------|
|provider |string |是 | 服务空间供应商,支付宝小程序云为:`alipay`,阿里云为:`aliyun`,腾讯云为:`tencent` |
|spaceId |string |是 | 服务空间Id |
|useOldSpaceId|boolean|是 | 当前获取的服务空间id是否为迁移前的服务空间id,新增于`HBuilderX 3.6.13` |
|functionName |string |是 | 云对象名称,新增于`HBuilderX 3.5.1` |
|functionType |string |是 | 云对象此值固定为`cloudobject`,新增于`HBuilderX 3.5.1` |
### 获取客户端token@get-uni-id-token
......@@ -749,6 +749,7 @@ module.exports = {
```
### 云对象的接收参数的体积上限
- 支付宝小程序云接收参数大小不可超过6MB
- 阿里云接收参数大小不可超过1MB
- 腾讯云接收参数大小不可超过5MB
......
......@@ -75,16 +75,15 @@ web控制台可以新建、删除服务空间,管理线上的服务空间资
##### 绑定其它项目的服务空间
选中项目下的`uniCloud-aliyun|tcb`目录, 右键菜单,点击 【关联云服务空间或项目... 】 ,可以`关联云服务空间``绑定其它项目的服务空间`
选中项目下的`uniCloud-alipay|aliyun|tcb`目录, 右键菜单,点击 【关联云服务空间或项目... 】 ,可以`关联云服务空间``绑定其它项目的服务空间`
![](https://ask.dcloud.net.cn/uploads/article/20201207/3ab467421c154e83077bb96f1497dec1.gif)
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/202310241639174.png)
##### 已关联项目
选择关联项目,此时显示的是所有的uniapp项目。用户选择任一uniapp项目进行关联, 关联效果如下图:
![](https://ask.dcloud.net.cn/uploads/article/20201207/6eab0accfe8fa00b97972b04773df688.png)
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/202310241640206.png)
1. 查看关联项目的服务空间:点击后,会在项目管理器打开关联的项目
2. 解除绑定:解除绑定,会解除绑定关系,可以重新`关联云服务空间``绑定其它项目的服务空间`
......@@ -136,12 +135,15 @@ function init(options):uniCloud
**options 参数说明**
|参数名 |类型 |必填 |默认值 |说明 |
|:-: |:-: |:-: |:-: |:-: |
|provider |String |是 |- |aliyun、tencent |
|spaceId |String |是 |- |服务空间ID,**注意是服务空间ID,不是服务空间名称** |
|clientSecret |String |是 |- |仅阿里云支持,可以在[uniCloud控制台](https://unicloud.dcloud.net.cn)服务空间列表中查看 |
|endpoint |String |否 |`https://api.bspapp.com` |服务空间地址,仅阿里云支持。商用版请将此参数设为`https://api.next.bspapp.com` |
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|:-------------:|:-------:|:---:|:-------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------:|
| provider | String | 是 | - | aliyun、tencent、alipay |
| spaceId | String | 是 | - | 服务空间ID,**注意是服务空间ID,不是服务空间名称** |
| clientSecret | String | 是 | - | 仅阿里云支持,可以在[uniCloud控制台](https://unicloud.dcloud.net.cn)服务空间列表中查看 |
| accessKey | String | 是 | - | 仅支付宝小程序云支持, 可以在[uniCloud控制台](https://unicloud.dcloud.net.cn)服务空间详情中查看 |
| secretKey | String | 是 | - | 仅支付宝小程序云支持, 可以在[uniCloud控制台](https://unicloud.dcloud.net.cn)服务空间详情中查看 |
| spaceAppId | String | 是 | - | 仅支付宝小程序云支持, 可以在[uniCloud控制台](https://unicloud.dcloud.net.cn)服务空间详情中查看 |
| endpoint | String | 否 | 阿里云:`https://api.bspapp.com`<br/> 支付宝小程序云:`https://{spaceId}.api-hz.cloudbasefunction.cn` | 服务空间地址,仅阿里云与支付宝小程序云支持。<br /> 阿里云商用版请将此参数设为`https://api.next.bspapp.com` |
**示例代码**
......@@ -158,4 +160,4 @@ myCloud.uploadFile()
```
uniCloud还支持跨服务空间的数据库访问,另见[文档](https://uniapp.dcloud.net.cn/uniCloud/hellodb?id=init-db)
\ No newline at end of file
uniCloud还支持跨服务空间的数据库访问,另见[文档](https://uniapp.dcloud.net.cn/uniCloud/hellodb?id=init-db)
......@@ -246,8 +246,8 @@ exports.main = async (event, context) => {
**注意**
- 云函数环境(仅腾讯云支持)仅能通过init返回同账号下其他的腾讯云服务空间的数据库实例。
- 客户端环境(腾讯云阿里云均支持)可以通过init返回本账号下任意云厂商服务空间的数据库实例
- 云函数环境(仅支付宝小程序云与腾讯云支持)仅能通过init返回同账号下其他的腾讯云服务空间的数据库实例。
- 客户端环境(支付宝小程序云腾讯云阿里云均支持)可以通过init返回本账号下任意云厂商服务空间的数据库实例
**示例**
......@@ -262,12 +262,13 @@ db.collection('uni-id-users').get()
**参数说明**
|参数名 |类型 |必填 |默认值 |说明 |
|:-: |:-: |:-: |:-: |:-: |
|provider |String |是 |- |aliyun、tencent |
|spaceId |String |是 |- |服务空间ID,**注意是服务空间ID,不是服务空间名称** |
|clientSecret |String |是 |- |仅阿里云支持,可以在[uniCloud控制台](https://unicloud.dcloud.net.cn)服务空间列表中查看 |
|endpoint |String |否 |`https://api.bspapp.com` |服务空间地址,仅阿里云支持。阿里云正式版需将此值设为`https://api.next.bspapp.com` |
| 参数名 | 类型 |必填 | 默认值 | 说明 |
|:-------------:|:-------:|:-: |:-------------------------:|:----------------------------------------------------------------------:|
| provider | String |是 | - | aliyun、tencent |
| spaceId | String |是 | - | 服务空间ID,**注意是服务空间ID,不是服务空间名称** |
| clientSecret | String |是 | - | 仅阿里云支持,可以在[uniCloud控制台](https://unicloud.dcloud.net.cn)服务空间列表中查看 |
| endpoint | String |否 | `https://api.bspapp.com` | 服务空间地址,仅阿里云支持。阿里云正式版需将此值设为`https://api.next.bspapp.com` |
| timeout | Number |否 | 5000 | 仅支付宝小程序云支持,请求超时时间(单位:毫秒),默认为5秒。 |
## 创建集合/表的API@createCollection
......@@ -289,10 +290,19 @@ const db = uniCloud.database();
db.createCollection("table1")
```
- 支付宝小程序云
支付宝小程序云提供了专门的创建数据表的API,此API仅支持云函数内运行,不支持clientDB调用。
```js
const db = uniCloud.database();
db.createCollection("table1")
```
**注意**
- 如果数据表已存在,腾讯云调用createCollection方法会报错
- 腾讯云调用collection的add方法不会自动创建数据表,不存在的数据表会报错
- 如果数据表已存在,支付宝小程序云与腾讯云调用createCollection方法会报错
- 支付宝小程序云与腾讯云调用collection的add方法不会自动创建数据表,不存在的数据表会报错
- 阿里云没有createCollection方法
- **使用代码方式创建的表没有索引、schema,性能和功能都受影响,不建议使用这种方式**
......@@ -409,6 +419,8 @@ new db.serverDate({
### 地理位置类型@geo-data-type
> 支付宝小程序云暂不支持
#### Point@geo-point
用于表示地理位置点,用经纬度唯一标记一个点,这是一个特殊的数据存储类型。
......@@ -507,9 +519,9 @@ new db.Geo.MultiPolygon([
不同于传统开发,连接数据库有单次操作时长限制,目前单次操作时间限制如下。超出此时间会报超时错误。一般情况下在设置了合适的索引时不会遇到超时错误,如何优化查询速度请参考:[数据库性能优化](uniCloud/db-performance.md)
|腾讯云 |阿里云 |
|-- |-- |
|5秒 |5秒 |
|腾讯云 |阿里云 | 支付宝小程序云 |
|-- |-- |------------|
|5秒 |5秒 | 默认5秒;最大5分钟 |
如果是大数据批处理,可以参考云函数递归调用,连续执行多个云函数处理一个任务[详情查看](uniCloud/cf-functions.md?id=recurrence)
......
......@@ -240,6 +240,8 @@ content-length: 13
### 返回集成响应@Integrationresponse
> 支付宝小程序云暂不支持
云函数可以返回如下这样特殊结构的**集成响应**,来自由地控制响应体:
```json
......
......@@ -8,14 +8,16 @@ Hello uniCloud,是一个示例,演示了 uniCloud 的各种能力。
Hello uniCloud部署了2套,分别连接uniCloud的阿里云版和腾讯云版。
- h5版地址(发布在uniCloud的前端网页托管上)
* Hello uniCloud 腾讯云版地址:[https://hellounicloud.dcloud.net.cn/tcb/](https://hellounicloud.dcloud.net.cn/tcb/)
* Hello uniCloud 支付宝小程序云版地址:暂未提供
* Hello uniCloud 阿里云版地址:[https://hellounicloud.dcloud.net.cn/#/](https://hellounicloud.dcloud.net.cn/#/)
* Hello uniCloud 腾讯云版地址:[https://hellounicloud.dcloud.net.cn/tcb/](https://hellounicloud.dcloud.net.cn/tcb/)
由于该示例未适配pc宽屏,如使用pc浏览器打开地址,建议F12打开控制台,使用手机模式预览。
- apk地址(发布在uniCloud的云存储上)
* Hello uniCloud 腾讯云版地址:[apk下载](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-1a10688c-0b30-4aaa-bbc1-7f4948cc562a/bdf452e4-3a0d-49cb-9a97-8e1aa6572758.apk)
* Hello uniCloud 支付宝小程序云版地址:暂未提供
* Hello uniCloud 阿里云版地址:[apk下载](https://m3w.cn/__uni__5c6d4e4)
* Hello uniCloud 腾讯云版地址:[apk下载](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-1a10688c-0b30-4aaa-bbc1-7f4948cc562a/bdf452e4-3a0d-49cb-9a97-8e1aa6572758.apk)
### 运行 Hello uniCloud 源码
......@@ -25,7 +27,7 @@ Hello uniCloud 的源码地址:[https://ext.dcloud.net.cn/plugin?id=4082](http
- 初次体验推荐阿里云,因为腾讯云的开户流程更复杂。
- 推荐使用vue3版本,因为编译速度更快。但注意不支持低版本Android。
<div align=center>
<img src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/create-unicloud.jpg"/>
<img src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/202310242120336.png"/>
</div>
2. HBuilderX 会在项目创建后弹出 uniCloud初始化向导,根据向导部署
- 按照法律要求,开通云服务器需实名认证,如未认证请根据提示完成
......@@ -36,6 +38,7 @@ Hello uniCloud 的源码地址:[https://ext.dcloud.net.cn/plugin?id=4082](http
- 第一次创建腾讯云服务空间时会为用户创建腾讯云账号并跳转到腾讯云实名界面,等待实名认证审核之后可以开通服务空间。若腾讯云实名认证提示身份证下已创建过多账户,则需要在腾讯云官网注销不用的账户。
- 阿里云每个账号可以有一个开发者版免费空间,此空间资源较少仅能用于测试开发。腾讯云无免费空间。
- 首次创建支付宝小程序云时,需前往uniCloud控制台开通支付宝小程序云服务空间,开通服务空间时需使用支付宝扫码授权开通支付宝小程序云服务。
3. 运行 hello uniCloud项目
- 在运行菜单运行项目,浏览器、app、小程序均可。uniCloud项目是云端一体的,运行前端后控制台会同时出现前端和云端的控制台。
......@@ -44,7 +47,7 @@ Hello uniCloud 的源码地址:[https://ext.dcloud.net.cn/plugin?id=4082](http
1. 创建uniCloud项目
HBuilderX中新建项目,选择uni-app项目,并勾选`启用uniCloud`,在右侧选择服务供应商(腾讯云或阿里云)
HBuilderX中新建项目,选择uni-app项目,并勾选`启用uniCloud`,在右侧选择服务供应商(支付宝小程序云、阿里云、腾讯云)
项目名称随意,比如 firstunicloud
......
......@@ -28,7 +28,7 @@ uniCloud腾讯云版支持云存储的文件权限。当上传的文件不希望
### 目录支持@storage-dir
腾讯云支持以上传时指定的cloudPath作为文件路径进行文件存储。
支付宝小程序云和腾讯云支持以上传时指定的cloudPath作为文件路径进行文件存储。
阿里云在`HBuilderX 3.8.5`及之后版本支持以上传时指定的cloudPath作为文件路径进行文件存储,需要在上传时指定参数`cloudPathAsRealPath: true`来启用目录支持。为兼容旧版阿里云表现`cloudPathAsRealPath`默认为`false`。对于客户端和本地云函数此调整在`HBuilderX 3.8.5`及之后的版本生效,对于云端云函数此调整自2023年6月17日生效。
......@@ -47,7 +47,7 @@ uniCloud腾讯云版支持云存储的文件权限。当上传的文件不希望
腾讯云支持配置云存储权限,需搭配腾讯云自定义登录使用,详情:[自定义登录](uniCloud/authentication.md)
阿里云不支持控制前端访问云储存的权限
支付宝小程序云与阿里云不支持控制前端访问云储存的权限
云存储客户端api内部会使用`uni.request``uni.uploadFile`来发送请求,如果有这两个接口写拦截器务必准确区分要拦截的内容
......@@ -57,7 +57,7 @@ uniCloud腾讯云版支持云存储的文件权限。当上传的文件不希望
客户端上传文件到云函数、云函数再上传文件到云存储,这样的过程会导致文件流量带宽耗费较大。所以一般上传文件都是客户端直传。
**阿里云和腾讯云的单文件大小限制为5GB**
**支付宝小程序云、阿里云、腾讯云的单文件大小限制为5GB**
**支付宝小程序开发工具上传文件到腾讯云时可能会返回失败,请以真机为准**
......@@ -66,19 +66,19 @@ uniCloud腾讯云版支持云存储的文件权限。当上传的文件不希望
#### 请求参数
**Object object**
|参数名 |类型 |必填 |默认值 |说明 |平台差异说明 |
|:-: |:-: |:-: |:-: |:-: |:-: |
|filePath |String |是 |- |要上传的文件对象 |- |
|cloudPath |String |是 |- |使用腾讯云时,表示文件的绝对路径,包含文件名。使用阿里云时,`cloudPath`为云端文件名,传`cloudPathAsRealPath: true`可以让cloudPath作为文件存储路径|- |
|cloudPathAsRealPath|Boolean |否 |false |是否以`cloudPath`作为云端文件绝对路径 |仅阿里云支持 |
|fileType |String |- |- |文件类型,支付宝小程序、钉钉小程序必填,可选image、video、audio |- |
|onUploadProgress |Function |否 |- |上传进度回调 |- |
|参数名 |类型 |必填 |默认值 | 说明 |平台差异说明 |
|:-: |:-: |:-: |:-: |:--------------------------------------------------------------------------------------------------------------:|:-: |
|filePath |String |是 |- | 要上传的文件对象 |- |
|cloudPath |String |是 |- | 使用支付宝小程序云或腾讯云时,表示文件的绝对路径,包含文件名。<br />使用阿里云时,`cloudPath`为云端文件名,传`cloudPathAsRealPath: true`可以让cloudPath作为文件存储路径 |- |
|cloudPathAsRealPath|Boolean |否 |false | 是否以`cloudPath`作为云端文件绝对路径 |仅阿里云支持 |
|fileType |String |- |- | 文件类型,支付宝小程序、钉钉小程序必填,可选image、video、audio |- |
|onUploadProgress |Function |否 |- | 上传进度回调 |- |
**注意**
- 使用阿里云时,`cloudPath`为云端文件名,请勿使用非法字符
- 腾讯云`cloudPath` 为文件的绝对路径,包含文件名 foo/bar.jpg、foo/bar/baz.jpg 等,不能包含除[0-9 , a-z , A-Z]、/、!、-、\_、.、、\*和中文以外的字符,使用 / 字符来实现类似传统文件系统的层级结构。
- 腾讯云`cloudPath`为文件标识,相同的`cloudPath`会覆盖,如果没有权限覆盖则会上传失败。阿里云以自动生成的ID为文件标识,不会存在覆盖问题
- 支付宝小程序云与腾讯云`cloudPath` 为文件的绝对路径,包含文件名 foo/bar.jpg、foo/bar/baz.jpg 等,不能包含除[0-9 , a-z , A-Z]、/、!、-、\_、.、、\*和中文以外的字符,使用 / 字符来实现类似传统文件系统的层级结构。
- 支付宝小程序云与腾讯云`cloudPath`为文件标识,相同的`cloudPath`会覆盖,如果没有权限覆盖则会上传失败。阿里云以自动生成的ID为文件标识,不会存在覆盖问题
- 阿里云目前由于安全原因暂时禁止云存储内上传html文件
- 上传文件超时时间可以在项目manifest.json内进行配置
......@@ -160,7 +160,7 @@ uni.chooseImage({
**Tips**
- 阿里云返回的fileID为链接形式可以直接使用,腾讯云返回的为cloud://形式,如需展示需要调用getTempFileURL获取链接
- 阿里云返回的fileID为链接形式可以直接使用,支付宝小程序云与腾讯云返回的为cloud://形式,如需展示需要调用getTempFileURL获取链接
- uniCloud.uploadFile 只有上传,没有文件选择。uni ui的封装了[FilePicker组件](https://ext.dcloud.net.cn/plugin?id=4079),从选择到上传一条龙。
### getTempFileURL(Object object)
......@@ -173,7 +173,7 @@ uni.chooseImage({
|---- |---- |
|HBuilderX 3.1.0+ |√ |
腾讯云获取文件临时下载链接。
支付宝小程序云与腾讯云获取文件临时下载链接。
自HBuilderX 3.1.0起阿里云也支持此接口,但仅为抹平和腾讯云的接口差异。因为阿里云的云存储不支持权限控制。
......@@ -548,15 +548,15 @@ HBuilderX 3.1.0之前版本如使用阿里云,请在客户端通过`uniCloud.u
**uploadFileOptions参数说明**
| 字段 | 类型 | 必填|默认值 | 说明 |平台差异说明 |
| --- | --- | --- |--- | --- |--- |
| cloudPath | string| 是 |- |使用腾讯云时,表示文件的绝对路径,包含文件名。使用阿里云时,`cloudPath`为云端文件名,传`cloudPathAsRealPath: true`可以让cloudPath作为文件存储路径| |
| fileContent | - | 是 |- |文件内容,请看下方说明 | |
|cloudPathAsRealPath|Boolean|否 |false |是否以`cloudPath`作为云端文件绝对路径 |仅阿里云支持 |
| 字段 | 类型 | 必填|默认值 | 说明 |平台差异说明 |
| --- | --- | --- |--- |----------------------------------------------------------------------------------------------------------|--- |
| cloudPath | string| 是 |- | 使用腾讯云或支付宝小程序云时,表示文件的绝对路径,包含文件名。使用阿里云时,`cloudPath`为云端文件名,传`cloudPathAsRealPath: true`可以让cloudPath作为文件存储路径 | |
| fileContent | - | 是 |- | 文件内容,请看下方说明 | |
|cloudPathAsRealPath|Boolean|否 |false | 是否以`cloudPath`作为云端文件绝对路径 |仅阿里云支持 |
**说明**
- 腾讯云支持在fileContent内传[可读流](https://nodejs.org/api/stream.html#stream_class_stream_readable) 或buffer
- 支付宝小程序云与腾讯云支持在fileContent内传[可读流](https://nodejs.org/api/stream.html#stream_class_stream_readable) 或buffer
- 阿里云支持在fileContent内传文件绝对路径或buffer
#### 响应参数
......@@ -584,9 +584,9 @@ let result = await uniCloud.uploadFile({
**平台兼容性**
|阿里云 |腾讯云 |
|---- |---- |
|× |√ |
| 阿里云 | 腾讯云 | 支付宝小程序云 |
|------|------|---------|
| × | √ | √ |
#### 请求参数
......@@ -673,9 +673,9 @@ let result = await uniCloud.deleteFile({
**平台兼容性**
|阿里云 |腾讯云 |
|---- |---- |
|× |√ |
| 阿里云 | 腾讯云 | 支付宝小程序云 |
|------|------|---------|
| × | √ | √ |
#### 请求参数
......
......@@ -2,7 +2,7 @@
如果云函数需要定时/定期执行,即定时触发,您可以使用云函数定时触发器。已配置定时触发器的云函数,会在相应时间点被自动触发,函数的返回结果不会返回给调用方。
使用定时触发可以执行一些跑批任务,阿里云可以在使用定时触发时将云函数最高超时时间设置为600秒,腾讯云定时触发最大超时时间为900秒。
使用定时触发可以执行一些跑批任务,支付宝小程序定时触发最大超时时间为3小时,阿里云可以在使用定时触发时将云函数最高超时时间设置为600秒,腾讯云定时触发最大超时时间为900秒。
在uniCloud web控制台点击需要添加触发器的云函数详情,创建云函数触发器,格式如下:
......@@ -32,8 +32,8 @@
**在package.json内配置定时触发时统一了云厂商的写法,请参考:[云函数package.json](cf-functions.md#packagejson)**
::: warning 注意
- 阿里云正式版最低触发间隔为1分钟,腾讯云最低触发间隔为1秒
- 阿里云的cron表达式为6位,腾讯云为7位。相比腾讯云,阿里云缺少代表年份的第7位
- 阿里云正式版最低触发间隔为1分钟,支付宝小程序云与腾讯云最低触发间隔为1秒
- 支付宝小程序云与阿里云的cron表达式为6位,腾讯云为7位。相比腾讯云,支付宝小程序云与阿里云缺少代表年份的第7位
- 定时触发使用的是utc+8的时间
- 定时执行的时间选在较为常见集中的时刻有极低概率出现执行失败的情况。建议避免整点(特别是0点),错开定时触发高峰期进行执行
- 目前阿里云定时任务在运行时长超出配置的时间时会重试3次,此行为后续可能会调整。建议开发者将开启定时触发的云函数超时时间配置为600秒
......@@ -121,6 +121,10 @@ Cron 表达式有七个**必需**字段,按空格分隔。其中,每个字
}
```
**支付宝小程序云**
暂无入参
`2023年7月14日起`阿里云入参对齐腾讯云,保留上述`triggerName``triggerTime`(不再推荐使用这两个属性),增加`Time``TriggerName``Type`
### 云对象使用定时触发@cloudobject
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册