Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
85ad423b
U
uni-app
项目概览
DCloud
/
uni-app
4 个月 前同步成功
通知
730
Star
38706
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看板
提交
85ad423b
编写于
11月 06, 2020
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: clientDB permission
上级
6ea9b691
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
41 addition
and
0 deletion
+41
-0
docs/uniCloud/clientdb.md
docs/uniCloud/clientdb.md
+41
-0
未找到文件。
docs/uniCloud/clientdb.md
浏览文件 @
85ad423b
...
...
@@ -1074,6 +1074,47 @@ db.collection('order')
.
get
()
```
在进行数据库操作之前,clientDB会使用permission内配置的规则对客户端操作进行一次预校验,如果预校验不通过还会通过数据库查询再进行一次校验
例:
```
js
// 数据库内news表有以下数据
{
_id
:
"
1
"
,
user_id
:
"
uid_1
"
,
title
:
"
abc
"
}
```
```
js
// news表对应的schema内做如下配置
{
"
bsonType
"
:
"
object
"
,
"
permission
"
:
{
// 表级权限
"
read
"
:
true
,
"
update
"
:
"
doc.user_id == auth.uid
"
// 只允许修改自己的数据
},
"
properties
"
:
{
"
user_id
"
:
{
"
bsonType
"
:
"
string
"
},
"
title
"
:
{
"
bsonType
"
:
"
string
"
}
}
}
```
```
js
// 用户ID为uid_1的用户在客户端使用如下操作
db
.
collection
(
'
news
'
).
doc
(
'
1
'
).
update
({
title
:
'
def
'
})
```
此时客户端条件里面只有
`doc._id == 1`
,schema内又限制的
`doc.user_id == auth.uid`
,所以第一次预校验无法通过,会进行一次查库校验判断是否有权限进行操作。发现auth.uid确实和doc.user_id一致,上面的数据库操作允许执行。
## action@action
action的作用是在执行前端发起的数据库操作时,额外触发一段云函数逻辑。它是一个可选模块。action是运行于云函数内的,可以使用云函数内的所有接口。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录