Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
bb4992ff
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3323
Star
107
Fork
845
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
102
列表
看板
标记
里程碑
合并请求
82
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
102
Issue
102
列表
看板
标记
里程碑
合并请求
82
合并请求
82
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录