Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CoderSmallfan
uni-app
提交
f5286808
U
uni-app
项目概览
CoderSmallfan
/
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,体验更适合开发者的 AI 搜索 >>
提交
f5286808
编写于
12月 26, 2020
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: revert tree search
上级
a2297090
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
1 addition
and
171 deletion
+1
-171
docs/uniCloud/clientdb.md
docs/uniCloud/clientdb.md
+0
-169
docs/uniCloud/schema.md
docs/uniCloud/schema.md
+1
-2
未找到文件。
docs/uniCloud/clientdb.md
浏览文件 @
f5286808
...
...
@@ -644,175 +644,6 @@ const db = uniCloud.database()
}
```
### 查询树形结构所有子节点@gettree
自2020-12-26起,clientDB支持在get方法内传入getTree参数对包含父子关系的表查询返回树状结构数据。
```
js
// get方法示例
get
({
getTree
:
{
limitLevel
:
10
,
// 最大查询层级(不包含当前层级),可以省略默认10级,最大15最小1
startWith
:
'
parent_code==null
'
// 第一层级条件,此初始条件可以省略,不传startWith时默认从最顶级开始查询
}
})
```
以下面的表结构及数据为例
```
js
// test-tree 表结构
{
"
bsonType
"
:
"
object
"
,
"
required
"
:
[],
"
properties
"
:
{
"
parent_code
"
:
{
"
bsonType
"
:
"
string
"
,
"
description
"
:
"
父级code
"
},
"
code
"
:
{
"
bsonType
"
:
"
string
"
,
"
description
"
:
"
当前code
"
,
"
parentKey
"
:
"
parent_code
"
,
// 指定父子关系为:如果一条数据库记录A的code和当前数据库记录B的parent_code相等,则A是B的父级。一个表内只能有一个父子关系
},
"
name
"
:
{
"
bsonType
"
:
"
string
"
,
"
description
"
:
"
名称
"
}
}
}
```
假设上述表有以下数据
```
js
{
name
:
'
p1
'
,
code
:
'
1
'
}
{
parent_code
:
'
1
'
,
name
:
'
c11
'
,
code
:
'
11
'
}
{
parent_code
:
'
1
'
,
name
:
'
c12
'
,
code
:
'
12
'
}
{
name
:
'
p2
'
,
code
:
'
2
'
}
{
parent_code
:
'
2
'
,
name
:
'
c21
'
,
code
:
'
21
'
}
{
parent_code
:
'
2
'
,
name
:
'
c22
'
,
code
:
'
22
'
}
```
以上面的表结构为例以下两种写法是等价的
```
js
get
({
getTree
:
{
limitLevel
:
10
,
startWith
:
'
parent_code==null
'
}
})
get
({
getTree
:
true
})
```
如果要查询code为'1'的数据及其在树形结构所有的子节点,可以使用如下写法
```
js
// 完整写法示例
const
res
=
await
db
.
collection
(
'
opendb-china-cities
'
)
.
field
(
'
name as text,code as value
'
)
.
get
({
getTree
:
{
startWith
:
'
code == "1"
'
}
})
// 查询结果
{
data
:
[{
text
:
'
p1
'
,
value
:
'
1
'
,
children
:[{
text
:
'
c11
'
,
value
:
'
11
'
,
children
:
[]
},{
text
:
'
c12
'
,
value
:
'
12
'
,
children
:
[]
}]
}]
}
```
**注意**
-
目前不支持使用getTree的同时使用其他联表查询语法
-
如果使用了where条件会对所有查询的节点生效
-
不可一次查询量特别大的数据,比如一次性加载所有的省市区。推荐在菜单、部门选择等小数据量的场景下使用
### 查询树形结构所有父节点@gettreepath
自2020-12-26起,clientDB支持在get方法内传入getTreePath参数对包含父子关系的表查询返回树状结构数据某节点路径。
```
js
// get方法示例
get
({
getTreePath
:
{
limitLevel
:
10
,
// 最大查询层级(不包含当前层级),可以省略默认10级,最大15最小1
startWith
:
'
code=="22"
'
// 第一层级条件,此初始条件不可以省略
}
})
```
仍以上面getTree中的表结构和数据为例
如果要查询code为'22'的数据的在树形结构中的路径可以使用下面的写法
```
js
// 完整写法示例
const
res
=
await
db
.
collection
(
'
opendb-china-cities
'
)
.
field
(
'
name as text,code as value
'
)
.
get
({
getTreePath
:
{
startWith
:
'
code=="22"
'
}
})
// 查询返回结果
{
data
:
[{
text
:
'
p2
'
,
value
:
'
2
'
,
children
:[{
text
:
'
c22
'
,
value
:
'
22
'
,
}]
}]
}
```
**注意**
-
目前不支持使用getTreePath的同时使用其他联表查询语法
-
如果使用了where条件会对所有查询的节点生效
### 新增数据记录add
获取到db的表对象后,通过
`add`
方法新增数据记录。
...
...
docs/uniCloud/schema.md
浏览文件 @
f5286808
...
...
@@ -72,8 +72,7 @@ HBuilderX中运行前端项目,在控制台选择连接本地云函数,此
|errorMessage|string
|
Object |当数据写入或更新时,校验数据合法性失败后,返回的错误提示|
|defaultValue|string
|
Object|默认值|
|forceDefaultValue|string
|
Object|强制默认值,不可通过clientDB的代码修改,常用于存放用户id、时间、客户端ip等固定值。具体参考下表的defaultValue|
|foreignKey|String|关联字段。表示该字段的原始定义指向另一个表的某个字段,值的格式为
`表名.字段名`
,比如订单表的下单用户uid字段指向uni-id-users表的_id字段,那么值为
`uni-id-users._id`
。关联字段定义后可用于
[
联表查询
](
https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=lookup
)
,通过关联字段合成虚拟表,极大的简化了联表查询的复杂度|
|parentKey|String|同一个数据表内指向父级的字段。详情参考:
[
树状数据查询
](
https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=gettree
)
|
|foreignKey|String|关联字段。表示该字段的原始定义指向另一个表的某个字段,值的格式为
`表名.字段名`
,比如订单表的下单用户uid字段指向uni-id-users表的_id字段,那么值为
`uni-id-users._id`
。关联字段定义后可用于
[
联表查询
](
https://uniapp.dcloud.net.cn/uniCloud/database?id=lookup
)
,通过关联字段合成虚拟表,极大的简化了联表查询的复杂度|
|permission|Object|数据库权限,控制什么角色可以对什么数据进行读/写,可控制表和字段,可设置where条件。见下文
[
详述
](
uniCloud/schema?id=permission
)
|
|label|string|字段标题。生成前端表单代码时,渲染表单项前面的label标题|
|group|string|分组id。生成前端表单代码时,多个字段对应的表单项可以合并显示在一个uni-group组件中|
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录