logologo
Démarrer
Manuel
Développement
Plugins
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Démarrer
Manuel
Développement
Plugins
API
logologo

Démarrage rapide

Aperçu du développement de plugins
Créer son premier plugin
Structure des répertoires du projet

Développement côté serveur

Aperçu
Plugin
Collections (Tables de données)
Database (Opérations)
DataSourceManager (Gestion des sources de données)
ResourceManager (Gestion des ressources)
ACL (Contrôle des permissions)
Middleware
Cache
Event (Événement)
Context (Contexte de la requête)
Migration (Script de mise à niveau)
Logger (Journal)
I18n (Internationalisation)
Command (Ligne de commande)
CronJobManager (Gestion des tâches planifiées)
Test

Développement côté client

Aperçu
Plugin
Context (Contexte)
Router (Routeur)
ACL (Contrôle des permissions)
DataSourceManager (Gestion des sources de données)
Resource (Ressource)
Request (Requête)
Styles & Themes
Logger (Journal)
I18n (Internationalisation)
Test

Autres

Guide de mise à niveau des plugins
Liste des langues
Gestion des dépendances
Build
Previous PageDatabase (Opérations)
Next PageResourceManager (Gestion des ressources)
Avis de traduction IA

Cette documentation a été traduite automatiquement par IA.

#DataSourceManager : Gestion des Sources de Données

NocoBase met à votre disposition le DataSourceManager pour gérer plusieurs sources de données. Chaque DataSource possède ses propres instances de Database, de ResourceManager et d'ACL, ce qui permet aux développeurs de gérer et d'étendre plusieurs sources de données de manière flexible.

#Concepts de base

Chaque instance de DataSource contient les éléments suivants :

  • dataSource.collectionManager : Utilisé pour gérer les collections et les champs.
  • dataSource.resourceManager : Gère les opérations liées aux ressources (par exemple, la création, la lecture, la mise à jour, la suppression, etc.).
  • dataSource.acl : Le contrôle d'accès (ACL) pour les opérations sur les ressources.

Pour un accès plus pratique, des alias sont fournis pour les membres de la source de données principale :

  • app.db équivaut à dataSourceManager.get('main').collectionManager.db
  • app.acl équivaut à dataSourceManager.get('main').acl
  • app.resourceManager équivaut à dataSourceManager.get('main').resourceManager

#Méthodes courantes

#dataSourceManager.get(dataSourceKey)

Cette méthode renvoie l'instance DataSource spécifiée.

const dataSource = dataSourceManager.get('main');

#dataSourceManager.use()

Enregistre un middleware pour toutes les sources de données. Cela affectera les opérations sur toutes les sources de données.

dataSourceManager.use((ctx, next) => {
  console.log('Ce middleware s\'applique à toutes les sources de données.');
  await next();
});

#dataSourceManager.beforeAddDataSource()

S'exécute avant le chargement d'une source de données. Couramment utilisé pour l'enregistrement de classes statiques, telles que les classes de modèles et l'enregistrement de types de champs :

dataSourceManager.beforeAddDataSource((dataSource: DataSource) => {
  const collectionManager = dataSource.collectionManager;
  if (collectionManager instanceof SequelizeCollectionManager) {
    collectionManager.registerFieldTypes({
      belongsToArray: BelongsToArrayField, // Type de champ personnalisé
    });
  }
});

#dataSourceManager.afterAddDataSource()

S'exécute après le chargement d'une source de données. Couramment utilisé pour enregistrer des opérations, définir le contrôle d'accès, etc.

dataSourceManager.afterAddDataSource((dataSource) => {
  dataSource.resourceManager.registerActionHandler('downloadXlsxTemplate', downloadXlsxTemplate);
  dataSource.resourceManager.registerActionHandler('importXlsx', importXlsx);
  dataSource.acl.allow('*', 'downloadXlsxTemplate', 'loggedIn'); // Définir les permissions d'accès
});

#Extension des sources de données

Pour une extension complète des sources de données, veuillez vous référer au chapitre sur l'extension des sources de données.