Este documento ha sido traducido por IA. Para información precisa, consulte la versión en inglés.
SQLResource
Resource para ejecutar consultas basadas en configuraciones SQL guardadas o SQL dinámico, con datos provenientes de interfaces como flowSql:run / flowSql:runById. Es adecuado para informes, estadísticas, listas SQL personalizadas y otros escenarios. A diferencia de MultiRecordResource, SQLResource no depende de las colecciones; ejecuta consultas SQL directamente y admite paginación, vinculación de parámetros, variables de plantilla ({{ctx.xxx}}) y control del tipo de resultado.
Relación de herencia: FlowResource → APIResource → BaseRecordResource → SQLResource.
Formas de creación: ctx.makeResource('SQLResource') o ctx.initResource('SQLResource'). Para ejecutar basándose en una configuración guardada, utilice setFilterByTk(uid) (el UID de la plantilla SQL); para depuración, utilice setDebug(true) + setSQL(sql) para ejecutar SQL directamente. En RunJS, ctx.api es inyectado por el entorno de ejecución.
Escenarios de uso
Formato de datos
getData()devuelve diferentes formatos segúnsetSQLType():selectRows(predeterminado): Array, resultados de varias filas.selectRow: Objeto único.selectVar: Valor escalar (por ejemplo, COUNT, SUM).
getMeta()devuelve metadatos como la paginación:page,pageSize,count,totalPage, etc.
Configuración de SQL y modos de ejecución
Parámetros y contexto
Paginación
En SQL, puede utilizar {{ctx.limit}} y {{ctx.offset}} para hacer referencia a los parámetros de paginación. SQLResource inyecta automáticamente limit y offset en el contexto.
Obtención de datos y eventos
Ejemplos
Ejecución mediante plantilla guardada (runById)
Modo de depuración: Ejecución de SQL directamente (runBySQL)
Paginación y navegación
Tipos de resultados
Uso de variables de plantilla
Escuchar el evento refresh
Notas
- runById requiere guardar la plantilla primero: El UID utilizado en
setFilterByTk(uid)debe ser un ID de plantilla SQL ya guardado en la interfaz de administración. Puede guardarlo a través dectx.sql.save({ uid, sql }). - El modo de depuración requiere permisos:
setDebug(true)utilizaflowSql:run, lo que requiere que el rol actual tenga permisos de configuración de SQL.runByIdsolo requiere que el usuario haya iniciado sesión. - Antirrebote (Debouncing) de Refresh: Múltiples llamadas a
refresh()dentro del mismo ciclo de eventos solo ejecutarán la última para evitar solicitudes redundantes. - Vinculación de parámetros para prevención de inyecciones: Utilice
setBind()con marcadores:nameo?en lugar de la concatenación de cadenas para evitar la inyección de SQL.
Relacionado
- ctx.sql - Ejecución y gestión de SQL;
ctx.sql.runByIdes adecuado para consultas simples y puntuales. - ctx.resource - La instancia del recurso en el contexto actual.
- ctx.initResource() - Inicializa y vincula a
ctx.resource. - ctx.makeResource() - Crea una nueva instancia de recurso sin vincularla.
- APIResource - Recurso de API general.
- MultiRecordResource - Diseñado para colecciones y listas.

