Este documento ha sido traducido por IA. Para información precisa, consulte la versión en inglés.
ctx.sql
ctx.sql proporciona capacidades de ejecución y gestión de SQL, comúnmente utilizado en RunJS (como JSBlock y flujos de trabajo) para acceder directamente a la base de datos. Soporta la ejecución de SQL temporal, la ejecución de plantillas SQL guardadas por ID, vinculación de parámetros, variables de plantilla ({{ctx.xxx}}) y control del tipo de resultado.
Escenarios de uso
Nota:
ctx.sqlaccede a la base de datos a través de la APIflowSql. Asegúrese de que el usuario actual tenga permisos de ejecución para la fuente de datos correspondiente.
Permisos
La lógica del frontend destinada a usuarios regulares debe usar ctx.sql.runById(uid, options). Cuando se requiera SQL dinámico o gestión de plantillas, asegúrese de que el rol actual posea permisos de configuración de SQL.
Definición de tipos
Métodos comunes
Nota:
runse utiliza para depurar SQL y requiere permisos de configuración.saveydestroyse utilizan para gestionar plantillas SQL y requieren permisos de configuración.runByIdestá abierto a usuarios regulares; solo puede ejecutar plantillas guardadas y no puede depurar ni modificar el SQL.- Cuando se modifica una plantilla SQL, se debe llamar a
savepara persistir los cambios.
Parámetros
options para run / runById
options para save
Variables de plantilla SQL y vinculación de parámetros
Variables de plantilla {{ctx.xxx}}
Puede usar {{ctx.xxx}} en SQL para referenciar variables de contexto. Estas se analizan en valores reales antes de la ejecución:
Las fuentes de variables referenciables son las mismas que ctx.getVar() (por ejemplo, ctx.user.*, ctx.record.*, ctx.defineProperty personalizado, etc.).
Vinculación de parámetros
- Parámetros con nombre: Use
:nameen SQL y pase un objeto{ name: value }enbind. - Parámetros posicionales: Use
?en SQL y pase un arreglo[value1, value2]enbind.
Ejemplos
Ejecución de SQL temporal (Requiere permiso de configuración de SQL)
Uso de variables de plantilla
Guardado y reutilización de plantillas
Lista paginada (SQLResource)
Relación con ctx.resource y ctx.request
ctx.sql envuelve la API flowSql y está especializada para escenarios SQL; ctx.request puede usarse para llamar a cualquier API.
Notas
- Use la vinculación de parámetros (
:name/?) en lugar de la concatenación de cadenas para evitar la inyección de SQL. type: 'selectVar'devuelve un valor escalar, típicamente usado paraCOUNT,SUM, etc.- Las variables de plantilla
{{ctx.xxx}}se resuelven antes de la ejecución; asegúrese de que las variables correspondientes estén definidas en el contexto.
Relacionado
- ctx.resource: Recursos de datos; SQLResource llama internamente a la API
flowSql. - ctx.initResource(): Inicializa SQLResource para listas paginadas, etc.
- ctx.request(): Solicitudes HTTP generales.

