触发器
开发插件时,可以编写 .trigger.js 触发器来监听事件,触发器是一个函数,当事件发生时,触发器会被调用。
触发器定义
触发器文件名称以.trigger.js结尾,格式如下:
module.exports = {
listenTo: '对象API名称',
beforeInsert: [async] Function,
beforeUpdate: [async] Function,
beforeDelete: [async] Function,
beforeFind: [async] Function,
afterInsert: [async] Function,
afterUpdate: [async] Function,
afterDelete: [async] Function,
}
listenTo
对象名称,选填。如果没有定义此属性,则取文件名中第一个 . 之前的文字作为listenTo的值,支持通过通配符指向多个对象。
事件前触发
事件前触发的触发器,可以用于校验用户录入的数据是否正确,如果有问题,可以抛错,错误信息会反馈到前端操作页面;还可以结合权限控制当前操作等。
事件前触发的触发器函数都是以before前缀命名。
- beforeInsert
- beforeUpdate
- beforeDelete
- beforeFind
事件后触发
事件后触发的触发器,可以用于执行关联的事件,比如任务创建完成后发送通知给指定人员。
事件前触发的触发器函数都是以after前缀命名。
- afterInsert
- afterUpdate
- afterDelete
参数说明
所有脚本函数均为无参函数,所属数据可从this
中获取,this
结构如下
id
: 记录的唯一标识[string],userId
: 当前用户唯一标识[string],spaceId
: 当前工作区[string],doc
: 需要新增/修改的记录内容[json],previousDoc
: 修改/删除前的记录[json], //仅afterUpdate, afterDelete时存在此属性objectName
: 当前对象名称[string],datasource_name
: 数据源名称[string],getObject
: function(object_name: string)query
: 查询数据相关参数[json], //仅beforeFind时存在此属性