diff --git a/docs/release-note-alpha.md b/docs/release-note-alpha.md index ddce7779d0e601031d80f236e9a97dec9b85fed6..f5121ceb100a8876bab7220cd7f7be9125a2eb98 100755 --- a/docs/release-note-alpha.md +++ b/docs/release-note-alpha.md @@ -1,3 +1,39 @@ +#### 3.0.7.20210109-alpha + + App平台 修复 windows 系统部分情况下,查找 Chrome 失败,导致无法正常 debug 的Bug + + App平台 修复 包含微信小程序组件时,部分情况下首次编译触发热刷新的Bug + + App-Android平台 修复 nvue list 组件调用 setSpecialEffects 设置吸顶后,input 子组件无法获取焦点的Bug [详情](https://ask.dcloud.net.cn/question/114511) + + App-Android平台 修复 nvue list/waterfall 组件使用 refresh 并设置 background-color 属性后会出现白边的Bug [详情](https://ask.dcloud.net.cn/question/105800) + + App-iOS平台 修复 nvue refresh 组件处于刷新状态时显示位置向下偏移0.5像素的Bug + + 快应用 修复 华为快应用IDE V3.0.2无法识别项目类型的Bug +* 【uniCloud】 + + DB Schema 新增 支持对 string 类型数据配置 trim ,可自动对字符串去除前后空白字符 [详情](https://uniapp.dcloud.net.cn/uniCloud/schema?id=trim) + + DB Schema 修复 部分情况下使用 enum 报错的Bug + + DB Schema 修复 exclusiveMinimum、exclusiveMaximum 无效的bug + + clientDB 修复 查询树形结构时使用 startWith 某些写法导致报错的Bug + + clientDB 修复 field 内使用JQL联表查询语法时多个右花括号连续出现导致报错的Bug + + clientDB 修复 field 中包含`-`时报错的Bug + + uniCloud本地调试插件 修复 部分日志导致本地调试服务崩溃的Bug + + unicloud-db组件 支持tree查询,新增属性 gettree、startwith、limitlevel [详情](https://uniapp.dcloud.net.cn/uniCloud/unicloud-db?id=props) +* 【App插件(含5+App和uni-app的App端)】 + + 一键登录 优化 错误回调返回数据格式,添加 appid、metadata、uid 属性,便于排查错误 [规范](https://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.ErrorCallback) + + Android平台 更新 uni-AD 快手联盟SDK为3.3.6版,腾讯优量汇SDK为4.310.1180版,今日头条穿山甲SDK为3.4.1.0版 + + Android平台 更新 腾讯X5内核版本为 v4.3.0.67_43967 [详情](https://ask.dcloud.net.cn/article/36806) + + Android平台 更新 UniPush 华为厂商推送 SDK 版本为 v4:2.0.0,适配 HMS4.0+ [详情](https://ask.dcloud.net.cn/article/35622#huawei) + + Android平台 调整 应用主 Activity 为 FragmentActivity [详情](https://nativesupport.dcloud.net.cn/NativePlugin/course/android?id=%e6%b3%a8%e6%84%8f) + + Android平台 修复 native.js 调用 requestPermissions 请求的权限已被允许可能引起其它功能无法正常申请系统权限的Bug [详情](https://ask.dcloud.net.cn/question/114645) + + Android平台 修复 云端打包 更新 com.android.tools.build:gradle 版本后可能引起安装包文件变大、运行显示白屏的Bug [详情](https://ask.dcloud.net.cn/question/114496) + + Android平台 修复 uploader 上传文件监听上传进度变化返回数据不准确的Bug [详情](https://ask.dcloud.net.cn/question/101035) + + Android平台 修复 监听按键事件 keydown、keyup 不触发回调的Bug + + Android平台 修复 video 封面图片 poster 拉伸变形显示的Bug [详情](https://ask.dcloud.net.cn/question/114952) + + Android平台 修复 video 设置显示默认播放控件 controls 属性为 false 时手势操作失效的Bug + + Android平台 修复 previewImage 预览图片可能显示模糊的Bug [详情](https://ask.dcloud.net.cn/question/113520) + + Android平台 修复 2.9.9版本引出的 native.js 获取到原生对象可能无法执行器内部函数的Bug [详情](https://ask.dcloud.net.cn/article/38648) + + iOS平台 修复 previewImage 预览网络图片地址中包含query参数过多可能无法显示的Bug [详情](https://ask.dcloud.net.cn/question/98259) + + iOS平台 修复 audio 音频资源地址中包含中文字符时无法正常播放的Bug [详情](https://ask.dcloud.net.cn/question/103421) + + iOS平台 修复 video 动态更新 src 属性值域名相同时无法正常切换视频的Bug [详情](https://ask.dcloud.net.cn/question/110386) + + iOS平台 修复 video 视频资源地址中包含中文字符时无法正常播放的Bug + + iOS平台 修复 titleNView 标题文字在隐藏软键盘时可能出现抖动的Bug + #### 3.0.4.20201230-alpha * 【uniCloud】 + uniCloud本地调试插件 修复 调试时较早请求云函数且无法连接本地调试服务时报错的Bug diff --git a/docs/uniCloud/cf-database.md b/docs/uniCloud/cf-database.md index 8b8ebe0661977e28a90818dfe1c77211bd603040..3be069a8584801846e25a8b210b8501ec93acfe6 100644 --- a/docs/uniCloud/cf-database.md +++ b/docs/uniCloud/cf-database.md @@ -222,8 +222,8 @@ let res = await collection.doc('doc-id').set({ 支持 `where()`、`limit()`、`skip()`、`orderBy()`、`get()`、`field()`、`count()` 等操作。 只有当调用`get()`时才会真正发送查询请求。 - -注:默认取前100条数据,最大取前100条数据。 + +limit不设置的情况下默认返回100条数据;设置limit有最大值,腾讯云限制为最大1000条,阿里云限制为最大500条。 **get响应参数** diff --git a/docs/uniCloud/clientdb.md b/docs/uniCloud/clientdb.md index f9aab3291687fc37ded2f432101a772e26c3a8da..7779c079714191f32cd4e113e2bccf11fc0d00fe 100644 --- a/docs/uniCloud/clientdb.md +++ b/docs/uniCloud/clientdb.md @@ -53,7 +53,8 @@ db.collection('list') .then((res)=>{ // res 为数据库查询结果 }).catch((err)=>{ - + console.log(err.code); // 打印错误码 + console.log(err.message); // 打印错误内容 }) ``` @@ -66,9 +67,9 @@ db.collection('list') - 更新数据库时不可使用更新操作符`db.command.inc`等 - 更新数据时键值不可使用`{'a.b.c': 1}`的形式,需要写成`{a:{b:{c:1}}}`形式(后续会对此进行优化) -### 返回值说明@returnvalue +### err返回值说明@returnvalue -`clientDB`云端默认返回值形式如下,开发者可以在[action](uniCloud/database?id=action)的`after`内用js修改返回结果,传入`after`内的result不带code和message。 +`clientDB`如果云端返回错误,err的返回值形式如下, ```js { @@ -78,7 +79,7 @@ db.collection('list') } ``` -**错误码列表** +**err.code错误码列表** |错误码 |描述 | |:-: |:-: | @@ -93,6 +94,9 @@ db.collection('list') |DUPLICATE_KEY |索引冲突 | |SYSTEM_ERROR |系统错误 | +如需自定义返回的err对象,可以在clientDB中挂一个[action云函数](uniCloud/database?id=action),在action云函数的`after`内用js修改返回结果,传入`after`内的result不带code和message。 + + ### 前端环境变量@variable `clientDB`目前内置了3个变量可以供客户端使用,客户端并非直接获得这三个变量的值,而是需要传递给云端,云数据库在数据入库时会把变量替换为实际值。 @@ -1583,9 +1587,9 @@ db.collection('order') .get() ``` -在进行数据库操作之前,clientDB会使用permission内配置的规则对客户端操作进行一次预校验,如果预校验不通过还会通过数据库查询再进行一次校验 +在进行数据库操作之前,clientDB会使用permission内配置的规则对客户端操作进行一次校验,如果本次校验不通过还会通过数据库查询再进行一次校验 -例: +例1: ```js // 数据库内news表有以下数据 @@ -1624,6 +1628,57 @@ db.collection('news').doc('1').update({ 此时客户端条件里面只有`doc._id == 1`,schema内又限制的`doc.user_id == auth.uid`,所以第一次预校验无法通过,会进行一次查库校验判断是否有权限进行操作。发现auth.uid确实和doc.user_id一致,上面的数据库操作允许执行。 +例2: + +```js +// 数据库内goods表有以下数据 +{ + _id: "1", + name: "n1", + status: 1 +} +{ + _id: "2", + name: "n2", + status: 2 +} +{ + _id: "3", + name: "n3", + status: 3 +} +``` + +```js +// news表对应的schema内做如下配置 +{ + "bsonType": "object", + "permission": { // 表级权限 + "read": "doc.status > 1", + }, + "properties": { + "name": { + "bsonType": "string" + }, + "status": { + "bsonType": "int" + } + } +} +``` + +```js +// 用户在客户端使用如下操作,可以通过第一次校验,不会触发查库校验 +db.collection('goods').where('status > 1').get() + +// 用户在客户端使用如下操作,无法通过第一次校验,会触发一次查库校验(原理大致是使用name == "n3" && status <= 1作为条件进行一次查询,如果有结果就认为没有权限访问,了解即可,无需深入) +db.collection('goods').where('name == "n3"').get() + +// 用户在客户端使用如下操作,无法通过第一次校验,会触发一次查库校验,查库校验也会无法通过 +db.collection('goods').where('name == "n1"').get() +``` + + ## action@action action的作用是在执行前端发起的数据库操作时,额外触发一段云函数逻辑。它是一个可选模块。action是运行于云函数内的,可以使用云函数内的所有接口。 diff --git a/docs/uniCloud/faq.md b/docs/uniCloud/faq.md index 4b34ce0c496246d2fe490e367d24cf08e65ee9fa..e97f4765e72f5bd1db92a05431e564fd23b56460 100644 --- a/docs/uniCloud/faq.md +++ b/docs/uniCloud/faq.md @@ -89,11 +89,27 @@ websocket的实时特性导致serverless化比较复杂,目前曲线方案有 资源回收策略方面,阿里云是15分钟内没有第二次访问的云函数,就会被回收。腾讯云是半小时。 两家云厂商仍然在优化这个问题。目前如果开发者在意这个问题,给开发者的建议是: -1. 使用clientDB可以减少遇到问题的概率 +1. 使用clientDB可以减少遇到冷启动问题的概率 2. 非高频访问的云函数,合并到高频云函数中。有的开发者使用纯单页方式编写云函数,即在一个云函数中通过路由处理实现了整个应用的所有后台逻辑。参考[插件](https://ext.dcloud.net.cn/search?q=%E8%B7%AF%E7%94%B1&cat1=7&orderBy=UpdatedDate) 3. 非高频访问的云函数,可以通过定时任务持续运行它(注意腾讯云可以使用这个方式完全避开冷启动,而阿里云的定时任务最短周期大于资源回收周期) 4. 向service@dcloud.io发邮件,申请预留资源不销毁 +### uniCloud访问速度感觉不如传统服务器?@slow + +抛开冷启动,只看热启动,也有开发者反应unicloud的数据不如传统服务器。其实原因如下: + +在一台单机上安装php或java,同时安装数据库,访问速度确实快。 + +但在使用云数据库时,即数据库是单独的服务器,和运行代码不在一台服务器上时,本身就会略微造成些延迟。 + +如果每个请求都要拦截,校验权限,尤其是要查库校验权限的话,访问速度又会进一步延迟。 + +clientDB就是这种情况,因为clientDB内部有权限校验系统,某些权限的验证还需要数据库查询。 + +所以虽然clientDB的速度慢一些,但实际上开发者在自己写了路由拦截和权限管理的框架后,速度也下降。 + +clientDB也仍然在优化,减少查库校验权限的频次,优化速度。 + ### 发布H5时还得自己找个服务器部署前端网页,可以不用自己再找服务器吗? uniCloud支持[前端网页托管](https://uniapp.dcloud.io/uniCloud/hosting),并且免费! @@ -208,4 +224,4 @@ exports.main = async function(event){ ### 使用腾讯云报未登录Cloudbase -腾讯云会在本地storage存储一些信息,请不要在应用使用过程中使用clearStorage等接口直接删除storage。 \ No newline at end of file +腾讯云会在本地storage存储一些信息,请不要在应用使用过程中使用clearStorage等接口直接删除storage。 diff --git a/docs/uniCloud/schema.md b/docs/uniCloud/schema.md index 63022781f5c698a2f2ad6b60af14c292f9b4e290..daf9eba766e8d197f074c397f2f5746a079acf83 100644 --- a/docs/uniCloud/schema.md +++ b/docs/uniCloud/schema.md @@ -24,7 +24,7 @@ - **方式1,在web控制台编写schema** 1. 登录 [uniCloud控制台](https://unicloud.dcloud.net.cn),选中一个数据表 2. 点击表右侧页签 “表结构”,点击 “编辑” 按钮,在编辑区域编写 Schema,编写完毕后点保存按钮即可生效。 - ![](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-uni-app-doc/e237cb60-ff2d-11ea-8a36-ebb87efcf8c0.png) + ![](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-uni-app-doc/037fc310-549f-11eb-b997-9918a5dda011.png) **web控制台上编辑`DB Schema`保存后是实时生效的,请注意对现网商用项目的影响。** @@ -1032,7 +1032,8 @@ db.collection('street').where("shop_id=='123123 || shop_id=='456456'").get() `schema2code`不是简单的一键crud生成接口,它直接生成了可运行的页面。 `schema2code`代码生成系统功能包括: -- 自动生成新增、修改表单的页面文件,分别是add.vue和edit.vue。如果是uniCloud admin,还包括list.vue。 +- 自动生成前端页面,新增、修改、列表、详情页面文件,分别是add.vue、edit.vue、list.vue和detail.vue。 +- 自动生成uniCloud admin页面,新增、修改、列表页面文件,分别是add.vue、edit.vue和list.vue。 - 自动生成前端表单校验规则 表单校验工作,在前端和后端都需要做。在过去,这造成重复投入。 @@ -1046,7 +1047,7 @@ db.collection('street').where("shop_id=='123123 || shop_id=='456456'").get() DCloud提供了`uni-forms`前端组件,该组件的表单校验规范完全符合`DB Schema`中的校验规则,实现云端统一。`uni-forms`组件地址:[https://ext.dcloud.net.cn/plugin?id=2773](https://ext.dcloud.net.cn/plugin?id=2773) -1. 在uniCloud web控制台,进入一个数据表的表结构schema界面,点击按钮 “导出页面” +1. 在uniCloud web控制台,进入一个数据表的表结构schema界面,点击按钮 “schema2code” ![](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-uni-app-doc/ba87a6b0-1519-11eb-81ea-f115fe74321c.png)