跳到主要内容
版本:2.7

触发器

通过编写触发器,您可以在记录创建、删除和更改之前和之后自动触发服务器端代码,实现个性化的数据验证和处理。

定义触发器​

在微服务中,您可以定义一个操作,并为其添加触发器参数,这相当于将此操作定义为触发器。

actions: {
spaceUsersBeforeUpdate: {
trigger: {
listenTo: 'space_users',
when: ['beforeInsert', 'beforeUpdate']
},
async handler(ctx) {
this.broker.logger.debug('spaceUsersBeforeUpdate', ctx)
}
}
}

触发器参数​

    trigger: { 
listenTo: 'space_users',
when: ['beforeInsert', 'beforeUpdate']
},

监听对象​

“listenTo”参数用于指定应用触发器的对象。该参数用于定义触发器的监听对象,并表明只有当指定对象受到记录创建、删除或更改的影响时,触发器才会被激活。换句话说,它允许触发器侦听特定对象,并根据对这些对象所做的更改执行相应的数据验证和处理。

事件触发前​

事件前的触发器可以用来验证用户输入的数据是否正确。如果存在问题,将抛出错误消息并反馈给前端操作页面。它还可以与权限控制结合使用,验证当前操作是否正确。

  • beforeInsert
  • beforeUpdate
  • beforeDelete
  • beforeFind

事件触发后​

事件后的触发器可以用来执行关联事件,例如在任务创建后向指定人员发送通知。

  • afterFind
  • afterInsert
  • afterUpdate
  • afterDelete

触发器执行​

在触发器执行函数中,您可以使用 "ctx.params" 获取以下变量。

变量用途
isInsert如果此触发器由插入操作触发(来自 Steedos 用户界面、服务或 API),则返回 true。
isUpdate如果此触发器由更新操作触发(来自 Steedos 用户界面、服务或 API),则返回 true。
isDelete如果此触发器由删除操作触发(来自 Steedos 用户界面、服务或 API),则返回 true。
isFind如果此触发器由查询操作触发(来自 Steedos 用户界面、服务或 API),则返回 true。
isBefore如果此触发器在任何记录操作之前触发,则返回 true。
isAfter如果此触发器在所有记录操作之后触发,则返回 true。
id记录的唯一标识符 [字符串]。
doc需要添加/修改的记录内容 [json]。
previousDoc修改/删除前的记录 [json],在 afterUpdate 或 afterDelete 被触发时存在。
userId当前用户的唯一标识符 [字符串]。
spaceId当前工作空间 [字符串]。
objectName当前对象名称 [字符串]。
query查询数据相关参数 [json],在 beforeFind 被触发时存在。
data查询结果,在 afterFind 被触发时存在。