ctx.sql
ctx.sql bietet Funktionen zur Ausführung und Verwaltung von SQL, die häufig in RunJS (wie JSBlock, Ereignis-Workflows) verwendet werden, um direkt auf die Datenbank zuzugreifen. Es unterstützt die temporäre SQL-Ausführung, die Ausführung gespeicherter SQL-Vorlagen nach ID, Parameterbindung, Vorlagenvariablen ({{ctx.xxx}}) sowie die Steuerung des Ergebnistyps.
Anwendungsfälle
Hinweis:
ctx.sqlgreift über dieflowSql-API auf die Datenbank zu. Stellen Sie sicher, dass der aktuelle Benutzer über die entsprechenden Ausführungsberechtigungen f ür die Datenquelle verfügt.
Berechtigungen
Die Frontend-Logik für reguläre Benutzer sollte ctx.sql.runById(uid, options) verwenden. Wenn dynamisches SQL oder die Verwaltung von Vorlagen erforderlich ist, stellen Sie sicher, dass die aktuelle Rolle über SQL-Konfigurationsberechtigungen verfügt.
Typdefinition
Gängige Methoden
Hinweis:
runwird zum Debuggen von SQL verwendet und erfordert Konfigurationsberechtigungen.saveunddestroywerden zur Verwaltung von SQL-Vorlagen verwendet und erfordern Konfigurationsberechtigungen.runByIdist für reguläre Benutzer offen; es kann nur gespeicherte Vorlagen ausführen und das SQL weder debuggen noch ändern.- Wenn eine SQL-Vorlage geändert wird, muss
saveaufgerufen werden, um die Änderungen zu speichern.
Parameter
Optionen für run / runById
Optionen für save
SQL-Vorlagenvariablen und Parameterbindung
Vorlagenvariablen {{ctx.xxx}}
Sie können {{ctx.xxx}} in SQL verwenden, um auf Kontextvariablen zu verweisen. Diese werden vor der Ausführung in tatsächliche Werte aufgelöst:
Die Quellen für referenzierbare Variablen sind dieselben wie bei ctx.getVar() (z. B. ctx.user.*, ctx.record.*, benutzerdefinierte ctx.defineProperty usw.).
Parameterbindung
- Benannte Parameter: Verwenden Sie
:nameim SQL und übergeben Sie ein Objekt{ name: value }inbind. - Positionsparameter: Verwenden Sie
?im SQL und übergeben Sie ein Array[value1, value2]inbind.
Beispiele
Temporäres SQL ausführen (Erfordert SQL-Konfigurationsberechtigung)
Verwendung von Vorlagenvariablen
Vorlagen speichern und wiederverwenden
Paginierte Liste (SQLResource)
Beziehung zu ctx.resource und ctx.request
ctx.sql kapselt die flowSql-API und ist auf SQL-Szenarien spezialisiert; ctx.request kann verwendet werden, um jede beliebige API aufzurufen.
Wichtige Hinweise
- Verwenden Sie Parameterbindung (
:name/?) anstelle von String-Verkettung, um SQL-Injection zu vermeiden. type: 'selectVar'gibt einen skalaren Wert zurück, der normalerweise fürCOUNT,SUMusw. verwendet wird.- Vorlagenvariablen
{{ctx.xxx}}werden vor der Ausführung aufgelöst; stellen Sie sicher, dass die entsprechenden Variablen im Kontext definiert sind.
Verwandte Themen
- ctx.resource: Datenressourcen; SQLResource ruft intern die
flowSql-API auf. - ctx.initResource(): Initialisiert SQLResource für paginierte Listen usw.
- ctx.request(): Allgemeine HTTP-Anfragen.

