Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
P了个F
unidocs-zh
提交
4ebf2a88
U
unidocs-zh
项目概览
P了个F
/
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 搜索 >>
提交
4ebf2a88
编写于
1月 14, 2023
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: update schema ext
上级
422afbd9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
166 addition
and
16 deletion
+166
-16
docs/uniCloud/jql-schema-ext.md
docs/uniCloud/jql-schema-ext.md
+166
-16
未找到文件。
docs/uniCloud/jql-schema-ext.md
浏览文件 @
4ebf2a88
...
...
@@ -73,19 +73,48 @@ ext.js里引入公共模块的机制:
触发器的入参有以下几个,不同时机的触发器参数略有不同
|参数名 |类型 |默认值 |是否必备 |说明 |
|-- |-- |-- |-- |-- |
|collection |string |- |是 |当前表名 |
|operation |string |- |是 |当前操作类型:
`create`
、
`update`
、
`delete`
、
`read`
、
`count`
|
|where |object |- |否 |当前请求使用的查询条件(见下方说明) |
|field |array
<
string
>
|- |read必备 |当前请求访问的字段列表(见下方说明) |
|addDataList |array
<
object
>
|- |create必备 |新增操作传入的数据列表(见下方说明) |
|updateData |object |- |update必备 |更新操作传入的数据(见下方说明) |
|clientInfo |object |- |是 |客户端信息,包括设备信息、用户token等,详见:
[
clientInfo
](
cf-functions.md#get-client-infos
)
|
|userInfo |object |- |是 |用户信息 |
|result |object |- |afterXxx内必备 |本次请求结果 |
|isEqualToJql |function |- |是 |用于判断当前执行的jql语句和执行语句是否相等 |
|triggerContext |object |- |是 |用于在before和after内共享数据 |
|参数名 |类型 |默认值 |是否必备 |说明 |
|-- |-- |-- |-- |-- |
|collection |string |- |是 |当前表名 |
|operation |string |- |是 |当前操作类型:
`create`
、
`update`
、
`delete`
、
`read`
、
`count`
|
|where |object |- |否 |当前请求使用的查询条件(见下方说明) |
|field |array
<
string
>
|- |read必备 |当前请求访问的字段列表(见下方说明) |
|addDataList |array
<
object
>
|- |create必备 |新增操作传入的数据列表(见下方说明) |
|updateData |object |- |update必备 |更新操作传入的数据(见下方说明) |
|clientInfo |object |- |是 |客户端信息,包括设备信息、用户token等,详见:
[
clientInfo
](
cf-functions.md#get-client-infos
)
|
|userInfo |object |- |是 |用户信息 |
|result |object |- |afterXxx内必备 |本次请求结果 |
|isEqualToJql |function |- |是 |用于判断当前执行的jql语句和执行语句是否相等 |
|triggerContext |object |- |是 |用于在before和after内共享数据,新增于
`3.6.16`
|
|subCollection |array |- |否 |获取联表查询的副表列表,新增于
`3.7.0`
|
|rawWhere |object
|
string |- |否 |未经转化的原始查询条件,新增于
`3.7.0`
|
|rawGeoNear |object |- |否 |未经转化的原始geoNear参数,新增于
`3.7.0`
|
|skip |number |- |否 |跳过记录条数,新增于
`3.7.0`
|
|limit |number |- |否 |返回的结果集(文档数量)的限制,新增于
`3.7.0`
|
|sample |object |- |否 |sample(随机选取)方法的参数,新增于
`3.7.0`
|
|docId |string |- |否 |doc方法的参数,数据库记录的_id,新增于
`3.7.0`
|
#### subCollection@sub-collection
> 仅read操作联表有此参数,新增于 3.7.0
联表查询副表组成的列表
```
js
// article.schema.ext.js
module
.
exports
{
trigger
:
{
beforeRead
:
async
function
({
subCollection
}
=
{})
{
if
(
subCollection
&&
subCollection
.
length
>
1
)
{
throw
new
Error
(
'
仅允许关联一个副表
'
)
}
}
}
}
```
#### where@where
...
...
@@ -93,11 +122,132 @@ ext.js里引入公共模块的机制:
触发器收到的where参数为转化后的查询条件,可以直接作为参数传给db.collection()和dbJql.collection()的where方法。jql语句使用doc方法时也会转成where,形如:{_id: 'xxx'}
#### docId@doc-id
> read、delete、update操作可能有此参数,新增于 3.7.0
触发器收到的doc方法内传递的文档_id
**示例**
```
js
// article.schema.ext.js
module
.
exports
{
trigger
:
{
beforeDelete
:
async
function
({
docId
}
=
{})
{
if
(
!
docId
)
{
throw
new
Error
(
'
仅能指定文档id删除
'
)
}
}
}
}
```
#### rawWhere@raw-where
> read、delete、update操作可能有此参数,新增于 3.7.0
where或match方法的原始参数,未经jql转化。如果是字符串或使用了数据库方法,则仅能传递给databaseForJQL返回的数据库实例使用,不能传递给database方法返回的数据库实例使用。
**示例**
```
js
// article.schema.ext.js
module
.
exports
{
trigger
:
{
beforeDelete
:
async
function
({
rawWhere
}
=
{})
{
if
(
rawWhere
&&
typeof
rawWhere
!==
string
)
{
throw
new
Error
(
'
仅能使用字符串作为查询条件
'
)
}
}
}
}
```
#### rawGeoNear@raw-geo-near
> 仅read操作有此参数,新增于 3.7.0
geoNear方法的原始参数,未经jql转化。如果其中query是字符串或使用了数据库方法,则仅能传递给databaseForJQL返回的数据库实例使用,不能传递给database方法返回的数据库实例使用。
#### skip@skip
> 仅read操作有此参数,新增于 3.7.0
跳过的文档数量
**示例**
```
js
// article.schema.ext.js
module
.
exports
{
trigger
:
{
beforeRead
:
async
function
({
skip
}
=
{})
{
if
(
skip
&&
skip
>
10000
)
{
throw
new
Error
(
'
无法访问10000条以后的数据
'
)
}
}
}
}
```
#### limit@limit
> 仅read操作有此参数,新增于 3.7.0
返回的结果集(文档数量)的限制
**示例**
```
js
// article.schema.ext.js
module
.
exports
{
trigger
:
{
beforeRead
:
async
function
({
limit
}
=
{})
{
if
(
limit
&&
limit
>
100
)
{
throw
new
Error
(
'
每次最多访问100条数据
'
)
}
}
}
}
```
#### sample@sample
> 仅read操作有此参数,新增于 3.7.0
随机筛选方法的参数
**示例**
```
js
// article.schema.ext.js
module
.
exports
{
trigger
:
{
beforeRead
:
async
function
({
sample
}
=
{})
{
if
(
sample
&&
sample
.
size
>
100
)
{
throw
new
Error
(
'
每次最多随机筛选100条数据
'
)
}
}
}
}
```
#### field@field
> 仅read操作有此参数
field为所有被访问的字段的组成的数组,嵌套的字段会被摊平。
field为所有被访问的字段的组成的数组,嵌套的字段会被摊平。
未传递field时会返回所有字段
#### addDataList@add-data-list
...
...
@@ -506,11 +656,11 @@ schema扩展依赖的公共模块和扩展库同样可以被action、validateFun
内置依赖:目前schema扩展依赖了
`uni-id`
或
[
uni-id-common
](
uni-id-common.md
)
,uni-id 3.0.7及以上版本又依赖了
[
uni-config-center
](
uni-config-center.md
)
,这两个公共模块是可以在触发器内直接使用的。如果所在服务空间开通了redis,schema扩展内可直接使用redis扩展。
自
`HBuilderX 3.
6.2
0`
起,可以在项目的
`uniCloud/database`
目录上右键管理schema扩展依赖的公共模块和扩展库。同样在此目录右键选择
`上传schema扩展Js的配置`
将配置的依赖同步到云端。
自
`HBuilderX 3.
7.
0`
起,可以在项目的
`uniCloud/database`
目录上右键管理schema扩展依赖的公共模块和扩展库。同样在此目录右键选择
`上传schema扩展Js的配置`
将配置的依赖同步到云端。
![](
https://web-assets.dcloud.net.cn/unidoc/zh/deps-of-jql.jpg
)
`HBuilderX 3.2.7`
到
`HBuilderX 3.
6.20`
之间的版本,可通过在要使用的公共模块的package.json内配置
`"includeInClientDB":true`
,可以将公共模块和schema扩展关联,
`HBuilderX 3.6.2
0`
及之后的版本不推荐使用此用法
`HBuilderX 3.2.7`
到
`HBuilderX 3.
7.0`
之间的版本,可通过在要使用的公共模块的package.json内配置
`"includeInClientDB":true`
,可以将公共模块和schema扩展关联,
`HBuilderX 3.7.
0`
及之后的版本不推荐使用此用法
一个在JQL内使用的公共模块的package.json示例如下。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录