Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
191250f9
U
uni-app
项目概览
DCloud
/
uni-app
2 个月 前同步成功
通知
717
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,发现更多精彩内容 >>
提交
191250f9
编写于
1月 23, 2021
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: uniCloud clientDB
上级
41372238
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
36 addition
and
11 deletion
+36
-11
docs/uniCloud/clientdb.md
docs/uniCloud/clientdb.md
+36
-11
未找到文件。
docs/uniCloud/clientdb.md
浏览文件 @
191250f9
...
...
@@ -97,15 +97,15 @@ db.collection('list')
如需自定义返回的err对象,可以在clientDB中挂一个
[
action云函数
](
uniCloud/database?id=action
)
,在action云函数的
`after`
内用js修改返回结果,传入
`after`
内的result不带code和message。
###
前
端环境变量@variable
###
云
端环境变量@variable
`clientDB`
目前内置了3个变量可以供客户端使用,客户端并非直接获得这三个变量的值,而是需要传递给云端,云数据库在数据入库时会把变量替换为实际值。
|参数名
|说明
|
|:-:
|:-:
|
|db.env.uid |用户uid,依赖uni-id|
|db.env.now
|服务器时间戳
|
|db.env.clientIP|当前客户端IP |
|参数名
|说明
|
|:-:
|:-:
|
|db.env.uid
|用户uid,依赖uni-id|
|db.env.now
|服务器时间戳
|
|db.env.clientIP|当前客户端IP
|
使用这些变量,将可以避免过去在服务端代码中写代码获取用户uid、时间和客户端ip的麻烦。
...
...
@@ -116,6 +116,31 @@ let res = await db.collection('table').where({
}).
get
()
```
自
`HBuilderX 3.0.8`
起,上述环境变量用法有调整(旧版依然兼容,但是推荐使用新用法),以下示例为在新版HBuilderX下如何获取上述变量
```
js
const
db
=
uniCloud
.
database
()
const
uid
=
db
.
getCloudEnv
(
'
$cloudEnv_uid
'
)
const
now
=
db
.
getCloudEnv
(
'
$cloudEnv_now
'
)
const
clientIP
=
db
.
getCloudEnv
(
'
$cloudEnv_clientIP
'
)
```
使用JQL查询语法时如需使用上述变量可以使用如下写法
```
js
// HBuilderX 3.0.8及以上版本
const
db
=
uniCloud
.
database
()
const
res
=
await
db
.
collection
()
.
where
(
'
user_id == $cloudEnv_uid
'
)
.
get
()
// HBuilderX 3.0.8以下版本
const
db
=
uniCloud
.
database
()
const
res
=
await
db
.
collection
()
.
where
(
'
user_id == $env.uid
'
)
// $env.now、$env.clientIP
.
get
()
```
### JQL查询语法@jsquery
`jql`
,全称javascript query language,是一种js方式操作数据库的语法规范。
...
...
@@ -1261,7 +1286,7 @@ const res = await db.collection('score')
```
如果额外还在groupBy之前使用了
preField方法,此preF
ield用于决定将哪些数据传给groupBy和groupField使用
如果额外还在groupBy之前使用了
field方法,此f
ield用于决定将哪些数据传给groupBy和groupField使用
例:如果上述数据中score是一个数组
...
...
@@ -1310,11 +1335,11 @@ const res = await db.collection('score')
}
```
如下
preField写法将上面的score数组求和之后传递给groupBy和groupField使用。在preF
ield内没出现的字段(比如name),在后面的方法里面不能使用
如下
field写法将上面的score数组求和之后传递给groupBy和groupField使用。在f
ield内没出现的字段(比如name),在后面的方法里面不能使用
```
js
const
res
=
await
db
.
collection
(
'
score
'
)
.
preF
ield
(
'
grade,class,sum(score) as userTotalScore
'
)
.
f
ield
(
'
grade,class,sum(score) as userTotalScore
'
)
.
groupBy
(
'
grade,class
'
)
.
groupField
(
'
avg(userTotalScore) as avgScore
'
)
.
get
()
...
...
@@ -1342,8 +1367,8 @@ const res = await db.collection('score')
**注意**
-
在
上面使用preField方法的情况下,会计算preF
ield内访问的所有字段计算权限。上面的例子中会使用表的read权限和grade、class、score三个字段的权限,来进行权限校验。
-
在不使用
preF
ield,仅使用groupBy和groupField的情况下,会以groupBy和groupField内访问的所有字段的权限来校验访问是否合法。
-
在
使用field方法的情况下,会计算f
ield内访问的所有字段计算权限。上面的例子中会使用表的read权限和grade、class、score三个字段的权限,来进行权限校验。
-
在不使用
f
ield,仅使用groupBy和groupField的情况下,会以groupBy和groupField内访问的所有字段的权限来校验访问是否合法。
-
与field不同,使用groupField时返回结果不会包含_id字段
#### 统计数量
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录