ctx.sql
ctx.sql 提供 SQL 执行与管理能力,常用于 RunJS(如 JSBlock、事件流)中直接访问数据库。支持临时 SQL 执行、按 ID 执行已保存的 SQL 模板、参数绑定、模板变量({{ctx.xxx}})以及结果类型控制。
适用场景
注意:
ctx.sql通过flowSqlAPI 访问数据库,需确保当前用户有对应数据源的执行权限。
权限说明
面向普通用户的前端逻辑可使用 ctx.sql.runById(uid, options);需要动态 SQL 或管理模板时,需确保当前角色具备 SQL 配置权限。
类型定义
常用方法
注意:
run用于调试 SQL,需配置权限;save、destroy用于管理 SQL 模板,需配置权限;runById开放给普通用户,仅能按已保存模板执行,无法调试或修改 SQL;- SQL 模板有变动时,需调用
save保存。
参数说明
run / runById 的 options
save 的 options
SQL 模板变量与参数绑定
模板变量 {{ctx.xxx}}
在 SQL 中可使用 {{ctx.xxx}} 引用上下文变量,执行前会解析为实际值:
可引用的变量来源与 ctx.getVar() 一致(如 ctx.user.*、ctx.record.*、自定义 ctx.defineProperty 等)。
参数绑定
- 参数:SQL 中使用
$name,bind传对象{ name: value }
示例
临时执行 SQL(需 SQL 配置权限)
使用模板变量
保存模板并复用
分页列表(SQLResource)
与 ctx.resource、ctx.request 的关系
ctx.sql 封装了 flowSql API,专用于 SQL 场景;ctx.request 可调用任意 API。
注意事项
- 使用参数绑定(
$name)而非字符串拼接,避免 SQL 注入 type: 'selectVar'时返回标量值,通常用于COUNT、SUM等- 模板变量
{{ctx.xxx}}在执行前解析,确保上下文中已定义对应变量
相关
- ctx.resource:数据资源,SQLResource 内部会调用
flowSqlAPI - ctx.initResource():初始化 SQLResource 用于分页列表等
- ctx.request():通用 HTTP 请求

