Skip to content

Database Block

在工作流中直接操作项目的数据表,支持查询、统计、插入、更新和删除五种操作。

功能说明

Database Block 是一个数据节点,允许你在编辑器工作流中对项目的 Collection(数据表)执行 CRUD 操作。查询结果以变量形式输出,可被后续 Block 引用。所有数据输入都支持变量引用(ValueSource),可以动态使用上游 Block 的输出作为参数。

当你需要在工作流中读取数据库记录、写入新数据、更新已有记录、或删除数据时,使用 Database Block。前提是项目中已经创建了对应的 Collection(数据表)。

使用场景

  • 数据驱动的 AI 生成:先查询数据库获取上下文信息,再将查询结果传给 Generation Block 生成内容
  • 工作流自动化:根据 AI 生成的结构化数据自动插入或更新数据库记录
  • 数据管道:查询 -> 处理 -> 回写,构建完整的数据处理流水线

配置参数

属性名类型说明默认值
collectionIdstring目标数据表 ID(从下拉列表选择)''
operation'query' | 'count' | 'insert' | 'update' | 'delete'操作类型'query'
filtersJSONstring查询过滤条件(JSON 序列化的 DatabaseFilter[]'[]'
sortJSONstring排序配置(JSON 序列化的 DatabaseSort'{}'
pageSizestring每页条数,支持变量引用(JSON 序列化的 ValueSource''(默认 20)
insertDataJSONstring插入数据,字段到值的映射(JSON 序列化)'{}'
targetRowIdstring更新/删除的目标行 ID,支持变量引用''
updateDataJSONstring更新数据,字段到值的映射(JSON 序列化)'{}'
deleteRowIdstring删除的目标行 ID,支持变量引用''
confirmBeforeWriteboolean写入前确认(预留功能,暂未生效)false

过滤运算符

运算符含义示例
eq等于name = "张三"
neq不等于status != "deleted"
gt大于age > 18
gte大于等于score >= 60
lt小于price < 100
lte小于等于count <= 10
contains包含name 包含 "张"
not_contains不包含email 不包含 "test"

输出变量

输出变量根据操作类型不同而变化:

Query 操作

变量名类型说明
__default__array查询结果数组(同 rows)
rowsarray查询结果数组,每项包含 id、自定义字段、_created_at、_updated_at
totalnumber表中总记录数(不受分页限制)

Count 操作

变量名类型说明
__default__number记录总数
totalnumber记录总数

Insert 操作

变量名类型说明
__default__object新创建的记录对象
rowobject新创建的记录,含 id、自定义字段、_created_at、_updated_at

Update 操作

变量名类型说明
__default__object更新后的记录对象
rowobject更新后的完整记录

Delete 操作

变量名类型说明
__default__booleantrue 表示删除成功
successbooleantrue 表示删除成功
deletedIdstring被删除行的 UUID

引用语法

{{database_0}}                 -- 默认输出(类型随操作不同)
{{database_0.rows}}            -- 查询结果数组
{{database_0.rows.0.id}}       -- 第一条记录的 ID
{{database_0.rows.0.name}}     -- 第一条记录的 name 字段
{{database_0.total}}           -- 记录总数
{{database_0.row}}             -- 新建/更新后的记录
{{database_0.row.id}}          -- 新建/更新记录的 ID
{{database_0.success}}         -- 删除是否成功
{{database_0.deletedId}}       -- 被删除行的 ID

使用示例

示例 1:查询数据并遍历处理

查询所有用户记录,逐一生成个性化内容:

[Database Block: db_users] — 操作: Query, 表: users, 每页: 50
    |
[Loop Block] — 遍历 {{db_users.rows}}
    |
  [Generation Block] — "为 {{item.name}} 生成欢迎邮件,邮箱: {{item.email}}"

示例 2:查询 -> 判断 -> 插入

查询订单数量,超过阈值时插入告警记录:

[Database Block: order_count] — 操作: Count, 表: orders
    |
[Condition Block] — 条件: {{order_count.total}} > 1000
  ├─ true:
  │   └─ [Database Block: alert] — 操作: Insert, 表: alerts
  │       字段 message = "订单数超过 1000"
  │       字段 count = {{order_count.total}}
  └─ false:
      └─ (跳过)

运行时约束

  • 适用文档类型:所有文档类型(workflow、skill 均可使用)
  • 可插入上下文:顶层文档、Condition 分支、Loop 内、Promise 分支
  • 不可嵌套场景:无特殊限制

注意事项

  1. 必须先创建数据表:使用前需在项目的「数据库」页面中创建 Collection 并定义 Schema,否则配置面板中无法选择目标表
  2. 过滤条件在内存中执行:Query 操作先查询数据再在内存中过滤。大数据表建议合理设置 pageSize
  3. 单页查询:Query 当前只查询第 1 页,不支持自动翻页。需要遍历更多数据时,可结合 Loop Block 分页查询
  4. 分页上限:pageSize 最大为 100,最小为 1
  5. 软删除:Delete 操作是软删除(设置 deleted_at),数据不会被物理移除,可在数据库页面的回收站中恢复
  6. 排序限制:目前只能按系统字段(created_atupdated_at)排序,自定义字段排序会降级为按创建时间排序
  7. 所有值输入支持变量引用:pageSize、targetRowId、deleteRowId 以及 Insert/Update 的每个字段值都可以引用上游 Block 的输出变量

AI Workflow Editor