Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
你丑我先上
unidocs-zh
提交
69477d4e
U
unidocs-zh
项目概览
你丑我先上
/
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,体验更适合开发者的 AI 搜索 >>
提交
69477d4e
编写于
12月 03, 2022
作者:
W
wanganxp
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
schema ext
上级
e9f06960
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
28 addition
and
27 deletion
+28
-27
docs/uniCloud/jql-schema-ext.md
docs/uniCloud/jql-schema-ext.md
+28
-27
未找到文件。
docs/uniCloud/jql-schema-ext.md
浏览文件 @
69477d4e
...
...
@@ -21,13 +21,13 @@ JQL的数据库触发器,用于在执行一段JQL数据库指令(增删改
可以使用触发器方便的实现很多功能,例如:
1.
读取文章详情后阅读量加1
2.
发布一篇文章后自动给文章作者列表文章数
量加1
3.
更新文章时自动将更新时间修改为当前时间
1.
更新数据时自动将更新时间修改为当前时间
2.
读取文章详情后阅读
量加1
3.
发布一篇文章后自动给文章作者列表文章数量加1
由于数据库触发器是在云端执行的,所以clientDB操作数据库时很多不宜写在前端的代码,就可以挪到数据库触发器中实现。
如果把数据库的schema定义好,包括json和ext.js,那么各个业务模块就可以随便安心的调用数据库了,数据一致性逻辑和安全保障将被统一管理,不担心不良业务代码的破坏。
如果把数据库的schema定义好,包括json和ext.js,那么各个业务模块就可以随便安心的调用数据库了,数据一致性逻辑和安全保障将被统一管理,不担心不良业务代码的破坏
、不担心哪次调用会漏掉更新时间字段
。
### 触发器配置@config
...
...
@@ -81,7 +81,7 @@ ext.js里引入公共模块的机制:
|field |array
<
string
>
|- |read必备 |当前请求访问的字段列表(见下方说明) |
|addDataList|array
<
object
>
|- |create必备 |新增操作传入的数据列表(见下方说明) |
|updateData |object |- |update必备 |更新操作传入的数据(见下方说明) |
|clientInfo |object |- |必备 |客户端信息,详见:
[
clientInfo
](
cf-functions.md#get-client-infos
)
|
|clientInfo |object |- |必备 |客户端信息,
包括设备信息、uid等,
详见:
[
clientInfo
](
cf-functions.md#get-client-infos
)
|
#### where
...
...
@@ -176,6 +176,29 @@ field为所有被访问的字段的组成的数组,嵌套的字段会被摊平
}
```
#### 修改文章更新时间
```
js
// article.schema.ext.js
module
.
exports
{
trigger
:
{
beforeUpdate
:
async
function
({
where
,
updateData
,
clientInfo
}
=
{})
{
const
id
=
where
&&
where
.
_id
if
(
typeof
id
===
'
string
'
&&
(
updateData
.
title
||
updateData
.
content
))
{
//如果字段较多,也可以不列举字段,删掉后半个判断
if
(
updateData
.
content
)
{
// updateData.summary = 'xxxx' // 根据content生成summary
}
updateData
.
update_date
=
Date
.
now
()
// 更新数据的update_date字段赋值为当前服务器时间
}
}
}
}
```
#### 读取后触发实现阅读量加1
```
js
...
...
@@ -226,28 +249,6 @@ module.exports {
}
```
#### 修改文章更新时间
```
js
// article.schema.ext.js
module
.
exports
{
trigger
:
{
beforeUpdate
:
async
function
({
where
,
updateData
,
clientInfo
}
=
{})
{
const
id
=
where
&&
where
.
_id
if
(
typeof
id
===
'
string
'
&&
(
updateData
.
title
||
updateData
.
content
))
{
if
(
updateData
.
content
)
{
// updateData.summary = 'xxxx' // 根据content生成summary
}
updateData
.
update_date
=
Date
.
now
()
}
}
}
}
```
#### 新增文章时自动添加摘要
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录