Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小浣熊撸代码
uni-app
提交
2fe9c5e0
U
uni-app
项目概览
小浣熊撸代码
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2fe9c5e0
编写于
1月 11, 2021
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: uniCloud clientDB
上级
edaaed4b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
2 deletion
+53
-2
docs/uniCloud/clientdb.md
docs/uniCloud/clientdb.md
+53
-2
未找到文件。
docs/uniCloud/clientdb.md
浏览文件 @
2fe9c5e0
...
...
@@ -1583,9 +1583,9 @@ db.collection('order')
.
get
()
```
在进行数据库操作之前,clientDB会使用permission内配置的规则对客户端操作进行一次
预校验,如果预
校验不通过还会通过数据库查询再进行一次校验
在进行数据库操作之前,clientDB会使用permission内配置的规则对客户端操作进行一次
校验,如果本次
校验不通过还会通过数据库查询再进行一次校验
例:
例
1
:
```
js
// 数据库内news表有以下数据
...
...
@@ -1624,6 +1624,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是运行于云函数内的,可以使用云函数内的所有接口。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录