Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_36567140
unidocs-zh
提交
bb4992ff
U
unidocs-zh
项目概览
qq_36567140
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bb4992ff
编写于
7月 15, 2022
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: update jql-cache, cloudobject
上级
bbe4f2d4
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
167 addition
and
70 deletion
+167
-70
docs/uniCloud/_sidebar.md
docs/uniCloud/_sidebar.md
+1
-0
docs/uniCloud/cloud-obj.md
docs/uniCloud/cloud-obj.md
+2
-43
docs/uniCloud/http.md
docs/uniCloud/http.md
+27
-0
docs/uniCloud/jql-cache-redis.md
docs/uniCloud/jql-cache-redis.md
+114
-0
docs/uniCloud/jql.md
docs/uniCloud/jql.md
+0
-27
docs/uniCloud/trigger.md
docs/uniCloud/trigger.md
+23
-0
未找到文件。
docs/uniCloud/_sidebar.md
浏览文件 @
bb4992ff
...
...
@@ -26,6 +26,7 @@
*
[
数据库操作符
](
uniCloud/cf-database-dbcmd.md
)
*
[
数据库运算方法
](
uniCloud/cf-database-aggregate-operator.md
)
*
[
JQL语法
](
uniCloud/jql.md
)
*
[
缓存JQL查询结果
](
uniCloud/jql-cache-redis.md
)
*
[
客户端通过JQL操作数据库
](
uniCloud/clientdb.md
)
*
[
云函数通过JQL操作数据库
](
uniCloud/jql-cloud.md
)
*
[
unicloud-db前端组件
](
uniCloud/unicloud-db.md
)
...
...
docs/uniCloud/cloud-obj.md
浏览文件 @
bb4992ff
...
...
@@ -570,54 +570,13 @@ const res = await todo.add('title demo', 'content demo')
> 新增于HBuilderX 3.5.2
配置方式和云函数一致,相关文档:
[
定时触发器
](
uniCloud/trigger.md
)
配置完成后会触发云对象导出的
`_timing`
方法
云对象代码示例:
```
js
module
.
exports
=
{
_timing
:
function
()
{
console
.
log
(
'
triggered by timing
'
)
}
}
```
**注意**
-
定时触发云对象时,
`_before`
和
`_after`
均不执行
详细用法参考:
[
云对象使用定时触发
](
uniCloud/trigger.md?id=cloudobject
)
### url化@http-trigger
> 新增于HBuilderX 3.5.2
配置方式和云函数一致,相关文档:
[
url化
](
uniCloud/http.md
)
在url化的文档里面有关于云函数url化时,event.path的说明
>url化场景下,event.path表示以配置的url化路径为根路径的访问路径。以配置`/test`为云函数url化路径,访问`/test/a/b/c`时event.path为`/a/b/c`
调用url化的云对象时,event.path对应的部分必须是云对象导出的方法名。例如:云对象配置的触发路径是
`/todo`
,调用
`/todo/addTodo`
即会触发云对象的addTodo方法。方法区分大小写且不可含
`/`
。
url内query部分会被转换成云对象方法的入参。以下面的todo云对象为例
```
js
module
.
exports
=
{
addTodo
:
function
(
params
)
{
console
.
log
(
params
)
}
}
```
如果通过
`https://xxx.com/todo/addTodo?title=todo-title&content=todo-content`
调用云对象,怎todo方法内的console.log会输出以下内容
`{title: 'todo title', content: 'todo content'}`
需要注意的是自url内解析出的参数均为字符串类型。
**注意**
-
url化方式调用云对象时,
`_before`
和
`_after`
均正常执行
-
如果需要获取其他方式传入云对象的参数(如:post一个json内容到云对象),请使用
[
this.getHttpInfo
](
#get-http-info
)
获取
详细用法参考:
[
云对象使用url化
](
uniCloud/http.md?id=cloudobject
)
### 跨服务空间调用云对象@call-by-cloud-cross-space
...
...
docs/uniCloud/http.md
浏览文件 @
bb4992ff
...
...
@@ -351,3 +351,30 @@ exports.main = function() {
}
}
```
### 云对象使用url化@cloudobject
配置方式和云函数一致,请参阅上方章节
> 在云函数url化场景下,event.path表示以配置的url化路径为根路径的访问路径。以配置`/test`为云函数url化路径,访问`/test/a/b/c`时event.path为`/a/b/c`
调用url化的云对象时,event.path对应的部分必须是云对象导出的方法名。例如:云对象配置的触发路径是
`/todo`
,调用
`/todo/addTodo`
即会触发云对象的addTodo方法。方法区分大小写且不可含
`/`
。
url内query部分会被转换成云对象方法的入参。以下面的todo云对象为例
```
js
module
.
exports
=
{
addTodo
:
function
(
params
)
{
console
.
log
(
params
)
}
}
```
如果通过
`https://xxx.com/todo/addTodo?title=todo-title&content=todo-content`
调用云对象,怎todo方法内的console.log会输出以下内容
`{title: 'todo-title', content: 'todo-content'}`
需要注意的是自url内解析出的参数均为字符串类型。
**注意**
-
url化方式调用云对象时,
`_before`
和
`_after`
均正常执行
-
如果需要获取其他方式传入云对象的参数(如:post一个json内容到云对象),请使用
[
this.getHttpInfo
](
uniCloud/cloud-obj.md?id=get-http-info
)
获取
\ No newline at end of file
docs/uniCloud/jql-cache-redis.md
0 → 100644
浏览文件 @
bb4992ff
> 新增于HBuilderX 3.5.2,需先开通[redis](uniCloud/redis-introduction.md)
业务中经常遇到不常改动或不需要及时更新的数据,此时如果每次都去数据库读取会浪费数据库读写次数,并且会增加云函数运行时间导致云函数整体能处理的请求数量变低。为了应对这种情况,jql支持了将配置的查询指令的结果缓存在redis内的功能。
详细用法如下
1.
在插件市场导入
`uni-config-center`
插件,插件地址:
[
uni-config-center
](
https://ext.dcloud.net.cn/plugin?id=4425
)
2.
在
`uniCloud/cloudfunction/common/uni-config-center`
下创建
`uni-jql-cache-redis.json`
文件(注意此文件是标准json格式,不支持注释)
整个`uni-jql-cache-redis.json`文件是一个数组,其中每一项是一个缓存配置。示例内容如下
```js
[{
"id": "test-get", // 缓存id
"jql": "db.collection('test').limit(10).get()", // 要缓存的数据库指令
"expiresIn": 3600 // 缓存有效期
}]
```
3.
配置成功后与配置匹配的clientDB请求及使用jql扩展库的数据库查询会优先使用redis缓存(第一次调用匹配的查询语句时会先设置一次缓存)
未命中缓存时,clientDB或使用了jql扩展的云函数云函数会输出以下日志
```
js
"
当前请求需使用Redis缓存
"
"
返回Redis内缓存的结果
"
```
命中缓存时,clientDB或使用了jql扩展的云函数云函数会输出以下日志
```
js
"
当前请求需使用Redis缓存
"
"
未命中Redis缓存,设置Redis缓存
"
```
**缓存生效场景**
-
所有clientDB查询请求
-
启用redis扩展和jql扩展的云函数内的jql数据库查询请求
-
unicloud-db组件的查询请求
jql会将缓存配置对应的查询结果缓存到key为
`unicloud:jql-cache:${id}:string`
redis缓存内
## multiSend使用缓存@multi-send
使用multiSend同时发送多条指令时,不支持将整个multiSend进行缓存。需要单独缓存每条指令。
例:
```
js
const
book
=
db
.
collection
(
'
book
'
).
limit
(
10
).
getTemp
()
const
author
=
db
.
collection
(
'
author
'
).
limit
(
10
).
getTemp
()
db
.
multiSend
(
book
,
author
)
```
对上述数据库指令不能直接将缓存配置中的jql配置为
`const book = db.collection('book').limit(10).getTemp();const author = db.collection('author').limit(10).getTemp();db.multiSend(book,author)`
需要单独配置book表的查询语句和author表的查询语句,注意getTemp方法也需要改为get方法
```
js
[{
"
id
"
:
"
book-get
"
,
"
jql
"
:
"
db.collection('book').limit(10).get()
"
,
"
expiresIn
"
:
3600
},
{
"
id
"
:
"
author-get
"
,
"
jql
"
:
"
db.collection('author').limit(10).get()
"
,
"
expiresIn
"
:
3600
}]
```
## 联表查询@lookup
联表时配置的缓存语句也和jql语法一致
例:
```
js
const
book
=
db
.
collection
(
'
book
'
).
limit
(
10
).
getTemp
()
const
author
=
db
.
collection
(
'
author
'
).
getTemp
()
db
.
collection
(
book
,
author
).
get
()
```
缓存配置如下
```
js
[{
"
id
"
:
"
book-author-lookup
"
,
"
jql
"
:
"
const book = db.collection('book').limit(10).getTemp();const author = db.collection('author').getTemp();db.collection(book, author).get()
"
,
"
expiresIn
"
:
3600
}]
```
## 删除redis缓存@del-cache
使用redis删除命令传入缓存对应的key即可删除缓存
例:
```
js
const
redis
=
uniCloud
.
redis
()
const
id
=
'
book-author-lookup
'
const
cacheKey
=
`unicloud:jql-cache:
${
id
}
:string`
await
redis
.
del
(
cacheKey
)
```
## 注意事项
-
仅可缓存查询指令
-
注意id为缓存唯一id,不可与其他项重复
-
不可缓存使用了
`db.getCloudEnv()`
或
`$cloudEnv_`
开头的云端环境变量的查询
-
不可缓存使用了action的查询
-
不配置
`expiresIn`
时数据将会持久保存在redis内
-
启用jql扩展库的云函数同时也要启用redis扩展库才可以正常使用缓存功能,否则依然从数据库查询
\ No newline at end of file
docs/uniCloud/jql.md
浏览文件 @
bb4992ff
...
...
@@ -3351,33 +3351,6 @@ module.exports = {
-
action上传后可能需要一段时间才会在云端生效,通常是3分钟左右
## 缓存JQL结果到Redis内@redis-cache
> 新增于HBuilderX 3.5.2
用于缓存业务中不常改动或不需要及时更新的数据,如新闻热点等。详细用法如下
1.
在插件市场导入
`uni-config-center`
插件,插件地址:
[
uni-config-center
](
https://ext.dcloud.net.cn/plugin?id=4425
)
2.
在
`uniCloud/cloudfunction/common/uni-config-center`
下创建
`uni-jql-cache-redis.json`
文件(注意此文件是标准json格式,不支持注释)
整个
`uni-jql-cache-redis.json`
文件是一个数组,其中每一项是一个缓存配置。示例内容如下
```
js
[{
"
id
"
:
"
test-get
"
,
// 缓存id
"
jql
"
:
"
db.collection('test').limit(10).get()
"
,
// 要缓存的数据库指令
"
expiresIn
"
:
3600
// 缓存有效期
}]
```
**注意**
-
注意id为缓存唯一id,不可与其他项重复
-
jql会将缓存配置对应的查询结果缓存到key为
`unicloud:jql-cache:${id}:string`
redis缓存内
-
目前不可缓存使用了
`db.getCloudEnv()`
或
`$cloudEnv_`
开头的云端环境变量的查询
-
不可缓存使用了action的查询
-
不配置expiresIn时数据将会持久保存在redis内
## 数据库运算方法列表@aggregate-operator
uniCloud的云数据库,提供了一批强大的运算方法。这些方法是数据库执行的,而不是云函数执行的。
...
...
docs/uniCloud/trigger.md
浏览文件 @
bb4992ff
...
...
@@ -102,3 +102,26 @@ Cron 表达式有七个**必需**字段,按空格分隔。其中,每个字
"
timestamp
"
:
1585670400006
//触发云函数时的时间戳,可能略晚于cron表达式时间
}
```
### 云对象使用定时触发@cloudobject
> 新增于HBuilderX 3.5.2
配置方式和云函数一致,请参阅上方章节
配置完成后会触发云对象导出的
`_timing`
方法
云对象代码示例:
```
js
module
.
exports
=
{
_timing
:
function
()
{
console
.
log
(
'
triggered by timing
'
)
}
}
```
**注意**
-
定时触发云对象时,
`_before`
和
`_after`
均不执行
-
定时触发云对象时
`_timing`
方法不会收到任何参数
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录