操作 Operations

操作是流中的单个操作。 它们使您能够执行诸如管理 Directus 中的数据、转换流的数据、将信息发送到外部服务、设置条件逻辑、触发其他流等操作!

在此页面上,我们将解释每个操作的作用、它附加到数据链的值、如何使用其配置选项以及任何其他相关细节。 我们假设您已阅读有关 FlowsTriggers 的文档。

Condition

Condition

Condition 操作允许您通过使用 Filter Rules 验证传入的数据来选择 success pathfailure path

Options

Payload

此操作不会生成数据。 如果过滤规则配置正确,它将在其 operationKey 上附加一个 null 值,无论是否满足条件。 但是,如果过滤器规则配置错误,它将附加一个数组,其中包含一个可用于帮助调试错误配置的对象。

More Details

当使用配置为 Action (Blocking)Event Hook 时,如果您的流程以使用 reject 路径执行的条件结束,它 将取消您的数据库事务。

Run Script

此操作允许您使用 vanilla JavaScript 或 TypeScript 添加自定义脚本。 该脚本将在隔离的沙箱中安全地执行。 除了共享输入和输出值外,沙箱和主机之间不发生任何交互。 这意味着,例如,console.log 语句无效,无法访问文件系统,也无法进行网络请求。 选项

该操作提供了一个默认的函数模板。 optional data 参数允许您将数据链作为参数传递。

有效载荷

该函数的 return 值将附加在其 <operationKey> 下。

更多细节

例如,假设您在脚本操作中有这个函数,名为 myScript

json
// A key from the data chain
{
  "previousOperation": {
    "value": 5
  }
}

然后通过运行脚本添加以下逻辑。

ts
// Your function in the myScript operation
module.exports = function (data) {
  return {
    timesTwo: data.previousOperation.value * 2
  }
}

返回的值将附加在 myScript 操作键下。

json
{
  "previousOperation": {
    "value": 5
  },
  "myScript": {
    "timesTwo": 10
  }
}

确保您的 return 值是有效的 JSON。

抛出错误
如果您在 Run Script 操作中抛出错误,它将立即中断您的流程链并停止后续流程的执行。 如果您使用了 "Blocking" Event hook,抛出错误将取消原始事件事务到数据库。

Node Modules
出于安全原因,默认情况下禁用模块使用。 您可以通过FLOWS_EXEC_ALLOWED_MODULES环境变量 配置可用的节点模块。

Create Data

Create Data

此操作在集合中创建项目。

选项

  • Collection - 选择您要在其中创建项目的集合。
  • Permissions - 选择用于此操作的权限范围。
  • Emit Events - 切换是否发出事件。
  • Payload - 定义有效负载以在集合中创建项目。

有效载荷

一个包含所有已创建项目 ID 的数组将附加在其 <operationKey> 下。

更多细节

Emit Events 在 Directus 中切换事件的 visibility。 例如,如果打开,此操作将触发其他流或自定义扩展中的相关事件挂钩。 如果关闭,该操作将不会触发其他事件挂钩。 想象一下这样一种情况,您有一个由 <collection>.items.create 触发的流程,其中包含一个操作,然后尝试在该 <collection> 中创建另一个项目。 这将引发一个无限循环,操作会无限地触发它自己的流程。 但是,如果您关闭 Emit Events,则此操作不再触发其他事件挂钩。

要了解创建项目时的有效负载要求,请参阅 API 参考 > 项目

Delete Data

Delete Data

此操作从集合中删除项目。

选项

  • Collection - 选择您要从中删除项目的集合。
  • Permissions - 设置用于此操作的权限范围。
  • Emit Events - 切换是否发出事件。
  • IDs - 设置项目 ID 并按 Enter 键确认。单击要删除的 ID。
  • Query - 使用查询选择要删除的项目。要了解更多信息,请参阅 过滤规则

有效载荷

一个包含所有已删除项的 ID 的数组将附加在其 <operationKey> 下。

更多细节

Emit Events 在 Directus 中切换事件的 visibility。例如,如果打开,此操作将触发其他流或自定义扩展中的相关事件挂钩。如果关闭,该操作将不会触发其他事件挂钩。想象一下这样一种情况,您有一个由 <collection>.items.delete 触发的流程,其中包含一个操作,然后尝试删除该 <collection> 中的另一个项目。这将引发一个无限循环,操作会无限地触发它自己的流程。但是,如果您关闭 Emit Events,则此操作不再触发其他事件挂钩。

Read Data

Read Data

此操作从集合中读取项目并将它们添加到数据链中。您可以通过 ID 或运行查询来选择项目。

选项

  • Permissions - 设置用于此操作的权限范围。
  • Collections - 选择您想从中读取项目的集合。
  • IDs - 输入您要阅读的项目的 ID,然后按 Enter。单击要删除的 ID。
  • Query - 选择带有查询的项目。要了解更多信息,请参阅 过滤规则
  • Emit Events - 切换是否发出事件。

有效载荷 包含读取的所有项目的数组将附加在其 <operationKey> 下。

更多细节

Emit Events 在 Directus 中切换事件的 visibility。例如,如果打开,此操作将触发其他流或自定义扩展中的相关事件挂钩。如果关闭,该操作将不会触发其他事件挂钩。想象一下这样一种情况,您有一个由 <collection>.items.read 触发的流,其中包含一个操作,然后尝试读取该 <collection> 中的另一个项目。这将引发一个无限循环,操作会无限地触发它自己的流程。但是,如果您关闭 Emit Events,则此操作不再触发其他事件挂钩。

Update Data

Update Data

此操作更新集合中的项目。您可以通过 ID 或运行查询来选择要更新的项目。

选项

  • Collection - 选择您要在其中更新项目的集合。
  • Permissions - 设置此操作将继承权限的角色。
  • Emit Events - 切换是否发出事件。
  • IDs - 输入您要阅读的项目的 ID,然后按 Enter。单击要删除的 ID。
  • Payload - 更新集合中的项目。要了解更多信息,请参阅 API > 项目
  • Query - 选择要使用查询更新的项目。要了解更多信息,请参阅 过滤规则

有效载荷

一个包含所有更新项目的数组将附加在它的 <operationKey> 下。

更多细节

Emit Events 在 Directus 中切换事件的 visibility。例如,如果打开,此操作将触发其他流或自定义扩展中的相关事件挂钩。如果关闭,该操作将不会触发其他事件挂钩。想象一下,你有一个由 <collection>.items.update 触发的流程,其中包含一个操作,然后尝试更新该 <collection> 中的另一个项目。这将引发一个无限循环,其中操作触发自己的流程,无休止地更新项目。但是,如果您关闭 Emit Events,则此操作不再触发其他事件挂钩。

要了解更新项目时的“有效负载”要求,请参阅 API 参考 > 项目

Log to Console

Log to Console

此操作将信息输出到服务器端控制台以及 Data Studio 中的 Logs。这是对流配置进行故障排除的关键工具。日志操作的键在数据链上会有一个空值。

选项

有效载荷

此操作不会为数据链生成数据,因为它的消息用于调试和故障排除。它将在 operationKey 上附加一个 null 值。

更多细节

有关更多详细信息,请参阅 日志 部分。

发送电子邮件

发送电子邮件

此操作发送电子邮件。

选项

  • To - 设置电子邮件地址。点击 Enter (PC) 或 return (Mac) 保存电子邮件。单击药丸将其删除。
  • 主题 - 设置主题行。
  • 正文 - 使用 Markdown 或 WYSIWYG 编辑器创建电子邮件正文。

有效载荷

此操作不会为数据链生成数据。它将在 operationKey 上附加一个 null 值。

更多细节

批量电子邮件
您可以在“收件人”输入选项中输入一组电子邮件以发送多封电子邮件。

如果您正在从 localhost:8080 测试此操作,请务必检查您的垃圾邮件箱,因为您的电子邮件提供商可能会自动将其发送到那里。

Send Notification

Send Notification

此操作将通知推送给 Directus 用户。 如果操作成功执行,包含生成的所有已发送通知的 ID 的列表将附加在此操作的键下。

选项

  • Users - 通过 UUID 定义用户。 点击 Enter (PC) 或 return (Mac) 保存。 单击药丸将其删除。
  • Permissions - 定义此操作将从中继承权限的角色。
  • 标题 - 设置通知的标题。
  • Message - 设置通知的主体。

有效载荷

此操作不会生成数据。 它将在其 operationKey 上附加一个 null 值。

更多细节

批量通知
您可以在“收件人”输入选项中输入一组 UUID 以发送多封电子邮件。

Webhook / Request URL

Webhook / Request URL

此操作向另一个 URL 发出请求。

选项

  • 方法 - 选择发出 GET、POST、PATCH、DELETE 或其他类型的请求。
  • URL - 定义将请求发送到的 URL。
  • Headers — 创建一个新的 header:value 以随请求一起传递。
  • Request Body - 设置请求正文的数据。

有效载荷

当一个操作成功完成时,response 会附加在它的<operationKey 下。

Sleep

睡眠

此操作会在 Flow 中创建给定毫秒数的延迟,然后继续执行下一个操作。

选项

  • 毫秒 - 定义睡眠的毫秒数。

有效载荷

此操作不会生成数据。它将在其 operationKey 上附加一个 null 值。

转换有效载荷

转换有效负载

此操作允许您自定义定义自己的 JSON 有效负载以用于后续操作。这使您能够获取多个数据源并将它们“整理”到单个有效负载中。

选项

  • JSON - 定义要插入数据链的 JSON。

有效载荷

当操作成功完成时,您在 JSON 配置操作下定义的值将附加到其 operationKey

更多细节

Transform Payload 操作什么时候派上用场? 假设您需要使用来自 users_collectionwidgets_collection 和一些处理数据的第 3 方资源的数据创建有效负载。 您可以为 collection_a 添加一个 Read Data 操作,为 collection_b 添加另一个 Read Data 操作,以及为第三方资源添加一个 Webhook 操作。

然后您可以将所有这些数据拼接在一起以创建一个新的 JSON 对象,如下所示:

js
{
 "note": "You can add a hard-coded value!",
 "name": "{{users_collection.username}}",
 "widget_id": "{{widgets_collection.id}}",
 "results": "{{webhookKey.subnestedValue}}"
}

Trigger Flow

Trigger Flow

此操作启动另一个流,并且_(可选)_ 将数据传递给它。 它应该与 Another Flow 触发器结合使用。

选项

  • Flow - 通过其主键 UUID 定义流。
  • Payload - 定义一个 JSON payload 以传递到它触发的流上的 $trigger

有效载荷

如果您在另一个流的触发器中配置了一个响应正文,这将附加在此 operationKey 下。 如果没有配置 Response Body,则在此 operationKey 下附加 null

更多细节

流动 for 循环
如果将数组传递给另一个流,则另一个流将为数组中的每个项目运行一次。