Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
c0b88ad0
U
uni-app
项目概览
DCloud
/
uni-app
3 个月 前同步成功
通知
719
Star
38705
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c0b88ad0
编写于
1月 12, 2021
作者:
fxy060608
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://github.com/dcloudio/uni-app
上级
b8e0cc55
27b5853e
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
121 addition
and
13 deletion
+121
-13
docs/release-note-alpha.md
docs/release-note-alpha.md
+36
-0
docs/uniCloud/cf-database.md
docs/uniCloud/cf-database.md
+2
-2
docs/uniCloud/clientdb.md
docs/uniCloud/clientdb.md
+61
-6
docs/uniCloud/faq.md
docs/uniCloud/faq.md
+18
-2
docs/uniCloud/schema.md
docs/uniCloud/schema.md
+4
-3
未找到文件。
docs/release-note-alpha.md
浏览文件 @
c0b88ad0
#### 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
...
...
docs/uniCloud/cf-database.md
浏览文件 @
c0b88ad0
...
...
@@ -223,7 +223,7 @@ let res = await collection.doc('doc-id').set({
只有当调用
`get()`
时才会真正发送查询请求。
注:默认取前100条数据,最大取前100条数据。
limit不设置的情况下默认返回100条数据;设置limit有最大值,腾讯云限制为最大1000条,阿里云限制为最大500条。
**get响应参数**
...
...
docs/uniCloud/clientdb.md
浏览文件 @
c0b88ad0
...
...
@@ -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是运行于云函数内的,可以使用云函数内的所有接口。
...
...
docs/uniCloud/faq.md
浏览文件 @
c0b88ad0
...
...
@@ -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
)
,并且免费!
...
...
docs/uniCloud/schema.md
浏览文件 @
c0b88ad0
...
...
@@ -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
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录