Ce document a été traduit par IA. Pour des informations précises, veuillez consulter la version anglaise.
SQLResource
Une Resource permettant d'exécuter des requêtes basées sur des configurations SQL enregistrées ou du SQL dynamique, les données provenant d'interfaces telles que flowSql:run / flowSql:runById. Elle est adaptée aux rapports, aux statistiques, aux listes SQL personnalisées et à d'autres scénarios. Contrairement à MultiRecordResource, SQLResource ne dépend pas des collections ; elle exécute directement des requêtes SQL et prend en charge la pagination, la liaison de paramètres (binding), les variables de template ({{ctx.xxx}}) et le contrôle du type de résultat.
Héritage : FlowResource → APIResource → BaseRecordResource → SQLResource.
Méthode de création : ctx.makeResource('SQLResource') ou ctx.initResource('SQLResource'). Pour une exécution basée sur une configuration enregistrée, utilisez setFilterByTk(uid) (l'UID du template SQL). Pour le débogage, utilisez setDebug(true) + setSQL(sql) pour exécuter directement le SQL. Dans RunJS, ctx.api est injecté par l'environnement d'exécution.
Scénarios d'utilisation
Format des données
getData()retourne différents formats selonsetSQLType():selectRows(par défaut) : Tableau, résultats sur plusieurs lignes.selectRow: Objet unique.selectVar: Valeur scalaire (ex: COUNT, SUM).
getMeta()retourne les métadonnées telles que la pagination :page,pageSize,count,totalPage, etc.
Configuration SQL et modes d'exécution
Paramètres et contexte
Pagination
Dans le SQL, vous pouvez utiliser {{ctx.limit}} et {{ctx.offset}} pour référencer les paramètres de pagination. SQLResource injecte automatiquement limit et offset dans le contexte.
Récupération de données et événements
Exemples
Exécution via un template enregistré (runById)
Mode débogage : Exécution directe du SQL (runBySQL)
Pagination et navigation
Types de résultats
Utilisation de variables de template
Écoute de l'événement refresh
Remarques
- runById nécessite l'enregistrement préalable du template : L'UID utilisé dans
setFilterByTk(uid)doit correspondre à un ID de template SQL déjà enregistré dans l'interface d'administration. Vous pouvez l'enregistrer viactx.sql.save({ uid, sql }). - Le mode débogage nécessite des permissions :
setDebug(true)utiliseflowSql:run, ce qui nécessite que le rôle actuel dispose des permissions de configuration SQL.runByIdnécessite seulement que l'utilisateur soit connecté. - Anti-rebond (Debouncing) du refresh : Plusieurs appels à
refresh()au sein de la même boucle d'événements n'exécuteront que le dernier appel afin d'éviter les requêtes redondantes. - Liaison de paramètres pour la prévention d'injections : Utilisez
setBind()avec les marqueurs:nameou?au lieu de la concaténation de chaînes de caractères pour prévenir les injections SQL.
Voir aussi
- ctx.sql - Exécution et gestion SQL ;
ctx.sql.runByIdest adapté aux requêtes simples et ponctuelles. - ctx.resource - L'instance de ressource dans le contexte actuel.
- ctx.initResource() - Initialise et lie à
ctx.resource. - ctx.makeResource() - Crée une nouvelle instance de ressource sans liaison.
- APIResource - Ressource API générale.
- MultiRecordResource - Conçu pour les collections et les listes.

