Dieses Dokument wurde von KI übersetzt. Für genaue Informationen lesen Sie bitte die englische Version.
SQLResource
Eine Resource zum Ausführen von Abfragen basierend auf gespeicherten SQL-Konfigurationen oder dynamischem SQL. Die Datenquelle stammt von Schnittstellen wie flowSql:run / flowSql:runById. Sie eignet sich für Berichte, Statistiken, benutzerdefinierte SQL-Listen und andere Szenarien. Im Gegensatz zur MultiRecordResource ist die SQLResource nicht von Sammlungen (Collections) abhängig; sie führt SQL-Abfragen direkt aus und unterstützt Paginierung, Parameterbindung, Vorlagenvariablen ({{ctx.xxx}}) sowie die Steuerung des Ergebnistyps.
Vererbungshierarchie: FlowResource → APIResource → BaseRecordResource → SQLResource.
Erstellungsmethode: ctx.makeResource('SQLResource') oder ctx.initResource('SQLResource'). Zur Ausführung basierend auf einer gespeicherten Konfiguration verwenden Sie setFilterByTk(uid) (die UID der SQL-Vorlage). Zum Debuggen können Sie setDebug(true) + setSQL(sql) verwenden, um SQL direkt auszuführen. In RunJS wird ctx.api durch die Laufzeitumgebung injiziert.
Anwendungsbereiche
Datenformat
getData()gibt je nachsetSQLType()unterschiedliche Formate zurück:selectRows(Standard): Array, Ergebnisse mehrerer Zeilen.selectRow: Einzelnes Objekt.selectVar: Skalarer Wert (z. B. COUNT, SUM).
getMeta()gibt Metainformationen wie die Paginierung zurück:page,pageSize,count,totalPageusw.
SQL-Konfiguration und Ausführungsmodi
Parameter und Kontext
Paginierung
In SQL können Sie {{ctx.limit}} und {{ctx.offset}} verwenden, um auf Paginierungsparameter zuzugreifen. Die SQLResource injiziert limit und offset automatisch in den Kontext.
Datenabruf und Ereignisse
Beispiele
Ausführung über eine gespeicherte Vorlage (runById)
Debug-Modus: SQL direkt ausführen (runBySQL)
Paginierung und Navigation
Ergebnistypen
Verwendung von Vorlagenvariablen
Auf das refresh-Ereignis hören
Wichtige Hinweise
- runById erfordert vorheriges Speichern der Vorlage: Die in
setFilterByTk(uid)verwendete UID muss eine SQL-Vorlagen-ID sein, die bereits in der Administrationsoberfläche gespeichert wurde. Sie können diese überctx.sql.save({ uid, sql })speichern. - Debug-Modus erfordert Berechtigungen:
setDebug(true)nutztflowSql:run, was voraussetzt, dass die aktuelle Rolle über Berechtigungen zur SQL-Konfiguration verfügt.runByIderfordert lediglich, dass der Benutzer angemeldet ist. - Refresh-Debouncing: Mehrfache Aufrufe von
refresh()innerhalb desselben Ereigniszyklus führen nur die letzte Anfrage aus, um redundante Anfragen zu vermeiden. - Parameterbindung zur Vermeidung von Injektionen: Verwenden Sie
setBind()mit:nameoder?Platzhaltern anstelle von String-Verkettungen, um SQL-Injektionen zu verhindern.
Verwandte Themen
- ctx.sql – SQL-Ausführung und -Verwaltung;
ctx.sql.runByIdeignet sich für einfache, einmalige Abfragen. - ctx.resource – Die Resource-Instanz im aktuellen Kontext.
- ctx.initResource() – Initialisiert und bindet an
ctx.resource. - ctx.makeResource() – Erstellt eine neue Resource-Instanz ohne Bindung.
- APIResource – Allgemeine API-Resource.
- MultiRecordResource – Konzipiert für Sammlungen und Listen.

