Este documento foi traduzido por IA. Para informações precisas, consulte a versão em inglês.
SQLResource
Um Resource para executar consultas baseadas em configurações SQL salvas ou SQL dinâmico, com dados originados de interfaces como flowSql:run / flowSql:runById. É adequado para cenários como relatórios, estatísticas, listas SQL personalizadas, entre outros. Diferente do MultiRecordResource, o SQLResource não depende de coleções; ele executa consultas SQL diretamente e suporta paginação, vinculação de parâmetros (binding), variáveis de template ({{ctx.xxx}}) e controle do tipo de resultado.
Relação de herança: FlowResource → APIResource → BaseRecordResource → SQLResource.
Formas de criação: ctx.makeResource('SQLResource') ou ctx.initResource('SQLResource'). Para executar com base em uma configuração salva, use setFilterByTk(uid) (o UID do template SQL); para depuração, você pode usar setDebug(true) + setSQL(sql) para executar o SQL diretamente. No RunJS, o ctx.api é injetado pelo ambiente de execu ção.
Cenários de uso
Formato de dados
getData()retorna diferentes formatos com base emsetSQLType():selectRows(padrão): Array, resultados de múltiplas linhas.selectRow: Objeto único.selectVar: Valor escalar (ex: COUNT, SUM).
getMeta()retorna metadados como paginação:page,pageSize,count,totalPage, etc.
Configuração SQL e modos de execução
Parâmetros e Contexto
Paginação
No SQL, você pode usar {{ctx.limit}} e {{ctx.offset}} para referenciar os parâmetros de paginação. O SQLResource injeta automaticamente limit e offset no contexto.
Busca de dados e eventos
Exemplos
Executando via template salvo (runById)
Modo Debug: Executando SQL diretamente (runBySQL)
Paginação e Navegação
Tipos de resultado
Usando variáveis de template
Ouvindo o evento refresh
Observações
- runById requer salvar o template primeiro: O UID usado em
setFilterByTk(uid)deve ser um ID de template SQL já salvo na interface de administração. Você pode salvá-lo viactx.sql.save({ uid, sql }). - Modo debug requer permissões:
setDebug(true)utilizaflowSql:run, o que exige que o cargo atual tenha permissões de configuração SQL. OrunByIdexige apenas que o usuário esteja logado. - Debounce de refresh: Múltiplas chamadas para
refresh()dentro do mesmo loop de eventos executarão apenas a última para evitar requisições redundantes. - Vinculação de parâmetros para prevenção de injeção: Use
setBind()com placeholders:nameou?em vez de concatenação de strings para evitar injeção de SQL.
Relacionados
- ctx.sql - Execução e gerenciamento de SQL;
ctx.sql.runByIdé adequado para consultas simples e pontuais. - ctx.resource - A instância de resource no contexto atual.
- ctx.initResource() - Inicializa e vincula ao
ctx.resource. - ctx.makeResource() - Cria uma nova instância de resource sem vincular.
- APIResource - Recurso de API geral.
- MultiRecordResource - Voltado para coleções e listas.

