From 718b2a1d9286e895308741f69be8ae43de12047d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=BA=9A=E7=90=AA?= Date: Tue, 30 Nov 2021 15:56:00 +0800 Subject: [PATCH] docs: uniCloud --- docs/uniCloud/cf-database.md | 2 +- docs/uniCloud/cf-functions.md | 10 +++---- docs/uniCloud/client-sdk.md | 16 +++++----- docs/uniCloud/clientdb.md | 56 ++++++++++++++++++++++++++++------- docs/uniCloud/send-sms.md | 4 +-- docs/uniCloud/uni-id.md | 21 +++++++++---- 6 files changed, 77 insertions(+), 32 deletions(-) diff --git a/docs/uniCloud/cf-database.md b/docs/uniCloud/cf-database.md index a2c38f45e..f4bbe95e7 100644 --- a/docs/uniCloud/cf-database.md +++ b/docs/uniCloud/cf-database.md @@ -1820,7 +1820,7 @@ let res = await db.collection('user').where({ 事务通常用来在某个数据库操作失败之后进行回滚。 -> 事务因为要锁行,是有时间限制的。从事务开始到事务提交/回滚,时间不可超过10s。另外注意:如果多条事务同时处理同一行数据,可能存在写冲突,进而导致失败。 +> 事务因为要锁行,是有时间限制的。从事务开始到事务提交/回滚,时间不可超过10秒。另外注意:如果多条事务同时处理同一行数据,可能存在写冲突,进而导致失败。 ### runTransaction@run-transaction diff --git a/docs/uniCloud/cf-functions.md b/docs/uniCloud/cf-functions.md index 82a9d01fa..235a4eeb1 100644 --- a/docs/uniCloud/cf-functions.md +++ b/docs/uniCloud/cf-functions.md @@ -336,11 +336,11 @@ let callFunctionResult = await uniCloud.callFunction({ ## 云函数配置 -### 超时时间 +### 超时时间@timeout -**注意** +阿里云非定时触发请求云函数最大只支持10秒的超时时间。定时触发最大支持600秒的超时时间 -- 目前阿里云的超时时间和腾讯云有区别,如果在阿里云云函数运行超过10秒那么客户端没法同步接收返回结果,但是云函数仍会运行到配置的超时时间。腾讯云在云函数运行到配置的超时时间之前客户端都是可以收到返回结果的。 +腾讯云最大支持900秒超时时间 ### 固定出口IP@eip @@ -572,7 +572,7 @@ cloudfunction-config说明如下 { "fun-name": { // 云函数名称 "memorySize": 256, // 函数的最大可用内存,单位MB,可选值: 128|256|512|1024|2048,默认值256 - "timeout": 5, // 函数的超时时间,单位秒,默认值5。最长为60秒,阿里云在定时触发时最长可以是600秒 + "timeout": 5, // 函数的超时时间,单位秒,默认值5。 // triggers 字段是触发器数组,目前仅支持一个触发器,即数组只能填写一个,不可添加多个 "triggers": [{ // name: 触发器的名字,规则见https://uniapp.dcloud.net.cn/uniCloud/trigger,name不对阿里云生效 @@ -678,6 +678,4 @@ exports.main = async function() { ### 其它 - 云端的云函数中使用的时区是 `UTC+0`,而不是 `UTC+8`,在云函数中使用时间时需特别注意。云函数在HBuilderX本地运行时,时区则是电脑的时区,很可能是 `UTC+8`。建议使用时间戳,可以规避时区问题。 -- 使用阿里云作为服务商时,暂时无法使用相对路径读取文件,如:`fs.readFileSync('./info')`,可以替换为`fs.readFileSync(path.resolve(__dirname,'./info'))` -- 阿里云目前能同步返回数据的最大超时时间为10秒,即云函数运行超过10秒时客户端会收到超时报错。如果你在uniCloud web控制台配置了10秒以上的超时时间,云函数是可以运行到10秒以上的,只是客户端无法接收到返回值,腾讯云没有此限制。 diff --git a/docs/uniCloud/client-sdk.md b/docs/uniCloud/client-sdk.md index 086d183b4..ef8c9cf1f 100644 --- a/docs/uniCloud/client-sdk.md +++ b/docs/uniCloud/client-sdk.md @@ -23,9 +23,11 @@ uniCloud分为客户端和云端两部分,有些接口名称相同,参数也 解析客户端token获取用户信息。常用于在前端判断当前登录的用户状态和用户权限,比如根据不同的权限显示隐藏某些按钮。 -注意:不会发送网络请求,**注意这个仅仅是客户端接口,不校验token的合法性** +**注意** -注意:需要搭配uni-id使用并要求客户端必须将token存储在storage内的`uni_id_token`内 +- 此接口不会发送网络请求,**此接口仅仅是客户端接口,不校验token的合法性** +- 需要搭配uni-id使用并要求客户端必须将token存储在storage内的`uni_id_token`内 +- 如需获取role、permission需要将角色权限缓存在token内,此功能自uni-id 3.0.0其默认开启,参考:[缓存角色权限](uniCloud/uni-id.md?id=cache-permission-in-token) 用法:`uniCloud.getCurrentUserInfo()` @@ -33,11 +35,11 @@ uniCloud分为客户端和云端两部分,有些接口名称相同,参数也 **响应参数** -| 字段 | 类型 | 说明 | -| --- | --- | --- | -| uid | Number|当前用户uid | -| role | Array |用户角色列表。admin用户返回["admin"] | -| permission | Array |用户权限列表。注意admin角色此数组为空| +| 字段 | 类型 | 说明 | +| --- | --- | --- | +| uid | Number|当前用户uid | +| role | Array |用户角色列表。admin用户返回["admin"] | +| permission| Array |用户权限列表。注意admin角色此数组为空| 未能获取用户信息时返回以下结果 diff --git a/docs/uniCloud/clientdb.md b/docs/uniCloud/clientdb.md index c490064ae..ed3d8fb6c 100644 --- a/docs/uniCloud/clientdb.md +++ b/docs/uniCloud/clientdb.md @@ -19,7 +19,7 @@ **注意** - `clientDB`依赖uni-id(`1.1.10+版本`)提供用户身份和权限校验,如果你不了解uni-id,请参考[uni-id文档](https://uniapp.dcloud.net.cn/uniCloud/uni-id) -- `clientDB`依赖的uni-id需要在uni-id的config.json内添加uni-id相关配置,通过uni-id的init方法传递的参数不会对clientDB生效 +- `clientDB`依赖的uni-id需要在uni-id的config.json内添加uni-id相关配置,通过uni-id的init方法传递的参数不会对clientDB生效,参考:[uni-id 配置](uniCloud/uni-id.md?id=config) - 通常在管理控制台使用`clientDB`,需要获取不同角色用户拥有的权限(在权限规则内使用auth.permission),请先查阅[uni-id 角色权限](https://uniapp.dcloud.net.cn/uniCloud/uni-id?id=rbac) ## 对比:传统与clientDB云端协同的开发效率 @@ -59,7 +59,7 @@ js API可以执行所有数据库操作。``组件是js API的再 - 在HBuilderX 3.0+,``组件已经内置,可以直接使用。文档另见:[``组件](/uniCloud/unicloud-db) - 在HBuilderX 3.0以前的版本,使用该组件需要在插件市场单独引用`插件`,另见:[https://ext.dcloud.net.cn/plugin?id=3256](https://ext.dcloud.net.cn/plugin?id=3256) -以下文章重点介绍`clientDB`的js API。至于组件的用法,另见[文档](/uniCloud/unicloud-db)。 +以下文章重点介绍`clientDB`的js API。至于组件的用法,另见[文档](uniCloud/unicloud-db.md)。 ## clientDB前端API@jssdk @@ -87,6 +87,23 @@ db.collection('list') }) ``` +**jql查询语法示例** + +```js +// 获取db引用 +const db = uniCloud.database() //代码块为cdb +// 使用uni-clientDB +db.collection('list') + .where('name=="hello-uni-app"') + .get() + .then((res)=>{ + // res 为数据库查询结果 + }).catch((err)=>{ + console.log(err.code); // 打印错误码 + console.log(err.message); // 打印错误内容 + }) +``` + **使用说明** 前端操作数据库的语法与云函数一致,但有以下限制(使用jql语法时也一样): @@ -94,9 +111,9 @@ db.collection('list') - 上传时会对query进行序列化,除Date类型、RegExp之外的所有不可序列化的参数类型均不支持(例如:undefined) - 为方便控制权限,禁止前端使用set方法,一般情况下也不需要前端使用set - 更新数据库时不可使用更新操作符`db.command.inc`等 -- 更新数据时键值不可使用`{'a.b.c': 1}`的形式,需要写成`{a:{b:{c:1}}}`形式(后续会对此进行优化) +- 更新数据时键值不可使用`{'a.b.c': 1}`的形式,需要写成`{a:{b:{c:1}}}`形式 -### err返回值说明@returnvalue +### 返回值说明@returnvalue `clientDB`如果云端返回错误,err的返回值形式如下, @@ -291,7 +308,7 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型 ```html + collection="list" where="name == 'hello-uni-app'" :getone="true"> {{error}} {{item.name}} @@ -330,9 +347,10 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型 具体到这个正则 `/abc/.test(content)`,类似于sql中的`content like '%abc%'`,即查询所有字段content包含abc的数据记录。 -**注意:不支持非操作** +**注意** -**注意编写查询条件时,除test外,均为运算符左侧为数据库字段,右侧为常量** +- 不支持非操作 +- 编写查询条件时,除test外,均为运算符左侧为数据库字段,右侧为常量 #### 查询数组字段@querywitharr @@ -365,7 +383,7 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型