跳到主要内容

触发器

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

定义触发器

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

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 被触发时存在。