Ce document a été traduit par IA. Pour des informations précises, veuillez consulter la version anglaise.
Une ressource orientée vers les tables de données (collections) : les requêtes renvoient un tableau et prennent en charge la pagination, le filtrage, le tri ainsi que les opérations CRUD (création, lecture, mise à jour, suppression). Elle est adaptée aux scénarios impliquant "plusieurs enregistrements" tels que les tableaux et les listes. Contrairement à APIResource, MultiRecordResource spécifie le nom de la ressource via setResourceName(), construit automatiquement des URL telles que users:list ou users:create, et intègre des capacités natives pour la pagination, le filtrage et la sélection de lignes.
Héritage : FlowResource → APIResource → BaseRecordResource → MultiRecordResource.
Mode de création : ctx.makeResource('MultiRecordResource') ou ctx.initResource('MultiRecordResource'). Avant toute utilisation, vous devez appeler setResourceName('nom_de_la_collection') (par exemple 'users') ; dans RunJS, ctx.api est injecté par l'environnement d'exécution.
| Scénario | Description |
|---|---|
| Blocs de tableau | Les blocs de tableau et de liste utilisent MultiRecordResource par défaut, prenant en charge la pagination, le filtrage et le tri. |
| Listes JSBlock | Charger des données à partir de collections (utilisateurs, commandes, etc.) dans un JSBlock et effectuer un rendu personnalisé. |
| Opérations groupées | Utiliser getSelectedRows() pour obtenir les lignes sélectionnées et destroySelectedRows() pour une suppression groupée. |
| Ressources associées | Charger des collections associées via des formats tels que users.tags, ce qui nécessite l'utilisation de setSourceId(ID_enregistrement_parent). |
getData() renvoie un tableau d'enregistrements, correspondant au champ data de la réponse de l'API de liste.getMeta() renvoie les métadonnées de pagination et autres : page, pageSize, count, totalPage, etc.| Méthode | Description |
|---|---|
setResourceName(name) / getResourceName() | Nom de la ressource, ex: 'users', 'users.tags' (ressource associée). |
setSourceId(id) / getSourceId() | ID de l'enregistrement parent pour les ressources associées (ex: pour users.tags, passez la clé primaire de l'utilisateur). |
setDataSourceKey(key) / getDataSourceKey() | Identifiant de la source de données (utilisé dans les scénarios multi-sources). |
| Méthode | Description |
|---|---|
setFilterByTk(tk) / getFilterByTk() | Filtrer par clé primaire (pour un get unique, etc.). |
setFilter(filter) / getFilter() / resetFilter() | Conditions de filtrage, prenant en charge les opérateurs $eq, $ne, $in, etc. |
addFilterGroup(key, filter) / removeFilterGroup(key) | Groupes de filtres (pour combiner plusieurs conditions). |
setFields(fields) / getFields() | Champs demandés (liste blanche). |
setSort(sort) / getSort() | Tri, ex: ['-createdAt'] pour un tri décroissant par date de création. |
setAppends(appends) / getAppends() / addAppends / removeAppends | Chargement des associations (ex: ['user', 'tags']). |
| Méthode | Description |
|---|---|
setPage(page) / getPage() | Page actuelle (commence à 1). |
setPageSize(size) / getPageSize() | Nombre d'éléments par page, par défaut 20. |
getTotalPage() | Nombre total de pages. |
getCount() | Nombre total d'enregistrements (provenant des métadonnées du serveur). |
next() / previous() / goto(page) | Changer de page et déclencher refresh. |
| Méthode | Description |
|---|---|
setSelectedRows(rows) / getSelectedRows() | Données des lignes actuellement sélectionnées, utilisées pour les suppressions groupées ou d'autres opérations. |
| Méthode | Description |
|---|---|
refresh() | Demande la liste avec les paramètres actuels, met à jour getData() et les métadonnées de pagination, et déclenche l'événement 'refresh'. |
get(filterByTk) | Demande un enregistrement unique et le renvoie (ne l'écrit pas dans getData). |
create(data, options?) | Crée un enregistrement. L'option { refresh: false } empêche le rafraîchissement automatique. Déclenche 'saved'. |
update(filterByTk, data, options?) | Met à jour un enregistrement par sa clé primaire. |
destroy(target) | Supprime des enregistrements ; target peut être une clé primaire, un objet de ligne ou un tableau de clés/objets (suppression groupée). |
destroySelectedRows() | Supprime les lignes actuellement sélectionnées (génère une erreur si aucune n'est sélectionnée). |
setItem(index, item) | Remplace localement une ligne de données spécifique (n'initie pas de requête). |
runAction(actionName, options) | Appelle n'importe quelle action de ressource (ex: actions personnalisées). |
| Méthode | Description |
|---|---|
setRefreshAction(name) | L'action appelée lors du rafraîchissement, par défaut 'list'. |
setCreateActionOptions(options) / setUpdateActionOptions(options) | Configuration de la requête pour la création ou la mise à jour. |
on('refresh', fn) / on('saved', fn) | Déclenché après la fin du rafraîchissement ou après une sauvegarde. |
setResourceName('nom_de_la_collection') avant toute utilisation, sinon l'URL de la requête ne pourra pas être construite.parent.enfant (ex: users.tags), vous devez d'abord appeler setSourceId(clé_primaire_parent).refresh() au sein de la même boucle d'événements n'exécuteront que le dernier appel pour éviter les requêtes redondantes.getData() renvoie directement ce tableau.