Ce document a été traduit par IA. Pour des informations précises, veuillez consulter la version anglaise.
ctx.sql
ctx.sql fournit des capacités d'exécution et de gestion SQL, couramment utilisées dans RunJS (comme JSBlock et les flux de travail) pour accéder directement à la base de données. Il prend en charge l'exécution SQL temporaire, l'exécution de modèles SQL enregistrés par ID, la liaison de paramètres (binding), les variables de modèle ({{ctx.xxx}}) et le contrôle du type de résultat.
Scénarios d'utilisation
Remarque :
ctx.sqlaccède à la base de données via l'APIflowSql. Assurez-vous que l'utilisateur actuel dispose des permissions d'exécution pour la source de données correspondante.
Permissions
La logique front-end destinée aux utilisateurs réguliers doit utiliser ctx.sql.runById(uid, options). Lorsqu'un SQL dynamique ou la gestion de modèles est nécessaire, assurez-vous que le rôle actuel possède les permissions de configuration SQL.
Définition des types
Méthodes courantes
Remarque :
runest utilisé pour le débogage SQL et nécessite des permissions de configuration.saveetdestroysont utilisés pour gérer les modèles SQL et nécessitent des permissions de configuration.runByIdest ouvert aux utilisateurs réguliers ; il peut uniquement exécuter des modèles enregistrés et ne peut pas déboguer ou modifier le SQL.- Lorsqu'un modèle SQL est modifié,
savedoit être appelé pour persister les changements.
Paramètres
options pour run / runById
options pour save
Variables de modèle SQL et liaison de paramètres
Variables de modèle {{ctx.xxx}}
Vous pouvez utiliser {{ctx.xxx}} dans le SQL pour référencer des variables de contexte. Celles-ci sont analysées en valeurs réelles avant l'exécution :
Les sources des variables référençables sont les mêmes que pour ctx.getVar() (par exemple, ctx.user.*, ctx.record.*, ctx.defineProperty personnalisé, etc.).
Liaison de paramètres (Parameter Binding)
- Paramètres nommés : Utilisez
:namedans le SQL et passez un objet{ name: value }dansbind. - Paramètres positionnels : Utilisez
?dans le SQL et passez un tableau[value1, value2]dansbind.
Exemples
Exécution d'un SQL temporaire (Nécessite la permission de configuration SQL)
Utilisation de variables de modèle
Enregistrement et réutilisation de modèles
Liste paginée (SQLResource)
Relation avec ctx.resource et ctx.request
ctx.sql encapsule l'API flowSql et est spécialisé pour les scénarios SQL ; ctx.request peut être utilisé pour appeler n'importe quelle API.
Précautions
- Utilisez la liaison de paramètres (
:name/?) au lieu de la concaténation de chaînes pour éviter les injections SQL. type: 'selectVar'retourne une valeur scalaire, généralement utilisée pourCOUNT,SUM, etc.- Les variables de modèle
{{ctx.xxx}}sont résolues avant l'exécution ; assurez-vous que les variables correspondantes sont définies dans le contexte.
Voir aussi
- ctx.resource : Ressources de données ; SQLResource appelle l'API
flowSqlen interne. - ctx.initResource() : Initialise SQLResource pour les listes paginées, etc.
- ctx.request() : Requêtes HTTP générales.

