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 PageCache
Next PageContext (Contexte de la requête)
Avis de traduction IA

Cette documentation a été traduite automatiquement par IA.

#Événements

Le serveur de NocoBase déclenche des événements tout au long du cycle de vie de l'application, du cycle de vie des plugins et des opérations de base de données. Les développeurs de plugins peuvent écouter ces événements pour implémenter des logiques d'extension, des opérations automatisées ou des comportements personnalisés.

Le système d'événements de NocoBase se divise principalement en deux niveaux :

  • app.on() - Événements au niveau de l'application : Permettent d'écouter les événements liés au cycle de vie de l'application, tels que le démarrage, l'installation, l'activation de plugins, etc.
  • db.on() - Événements au niveau de la base de données : Permettent d'écouter les événements d'opération au niveau du modèle de données, comme la création, la mise à jour ou la suppression d'enregistrements.

Ces deux systèmes héritent de l'EventEmitter de Node.js et prennent en charge les interfaces standard .on(), .off() et .emit(). NocoBase étend également ce support avec emitAsync, qui permet de déclencher des événements de manière asynchrone et d'attendre que tous les écouteurs aient terminé leur exécution.

#Où enregistrer les écouteurs d'événements

Les écouteurs d'événements doivent généralement être enregistrés dans la méthode beforeLoad() du plugin. Cela garantit que les événements sont prêts dès la phase de chargement du plugin et que la logique ultérieure peut y répondre correctement.

import { Plugin } from '@nocobase/server';

export default class PluginHelloServer extends Plugin {
  async beforeLoad() {

    // Écouter les événements de l'application
    this.app.on('afterStart', () => {
      app.logger.info('NocoBase a démarré');
    });

    // Écouter les événements de la base de données
    this.db.on('afterCreate', (model) => {
      if (model.collectionName === 'posts') {
        app.logger.info(`Nouveau post : ${model.get('title')}`);
      }
    });
  }
}

#Écouter les événements de l'application avec app.on()

Les événements de l'application sont utilisés pour capturer les changements de cycle de vie de l'application NocoBase et de ses plugins. Ils sont idéaux pour la logique d'initialisation, l'enregistrement de ressources ou la détection de dépendances de plugins.

#Types d'événements courants

Nom de l'événementMoment du déclenchementUsages typiques
beforeLoad / afterLoadAvant / après le chargement de l'applicationEnregistrer des ressources, initialiser la configuration
beforeStart / afterStartAvant / après le démarrage du serviceDémarrer des tâches, afficher les logs de démarrage
beforeInstall / afterInstallAvant / après l'installation de l'applicationInitialiser les données, importer des modèles
beforeStop / afterStopAvant / après l'arrêt du serviceNettoyer les ressources, sauvegarder l'état
beforeDestroy / afterDestroyAvant / après la destruction de l'applicationSupprimer le cache, déconnecter les connexions
beforeLoadPlugin / afterLoadPluginAvant / après le chargement du pluginModifier la configuration du plugin ou étendre ses fonctionnalités
beforeEnablePlugin / afterEnablePluginAvant / après l'activation du pluginVérifier les dépendances, initialiser la logique du plugin
beforeDisablePlugin / afterDisablePluginAvant / après la désactivation du pluginNettoyer les ressources du plugin
afterUpgradeAprès la mise à niveau de l'applicationExécuter la migration de données ou des correctifs de compatibilité

Exemple : Écouter l'événement de démarrage de l'application

app.on('afterStart', async () => {
  app.logger.info('🚀 Le service NocoBase a démarré !');
});

Exemple : Écouter l'événement de chargement d'un plugin

app.on('afterLoadPlugin', ({ plugin }) => {
  app.logger.info(`Le plugin ${plugin.name} a été chargé`);
});

#Écouter les événements de la base de données avec db.on()

Les événements de la base de données permettent de capturer diverses modifications de données au niveau du modèle. Ils sont adaptés pour l'audit, la synchronisation, le remplissage automatique et d'autres opérations.

#Types d'événements courants

Nom de l'événementMoment du déclenchement
beforeSync / afterSyncAvant / après la synchronisation de la structure de la base de données
beforeValidate / afterValidateAvant / après la validation des données
beforeCreate / afterCreateAvant / après la création d'enregistrements
beforeUpdate / afterUpdateAvant / après la mise à jour d'enregistrements
beforeSave / afterSaveAvant / après la sauvegarde (inclut la création et la mise à jour)
beforeDestroy / afterDestroyAvant / après la suppression d'enregistrements
afterCreateWithAssociations / afterUpdateWithAssociations / afterSaveWithAssociationsAprès les opérations incluant des données associées
beforeDefineCollection / afterDefineCollectionAvant / après la définition de collections
beforeRemoveCollection / afterRemoveCollectionAvant / après la suppression de collections

Exemple : Écouter l'événement après la création de données

db.on('afterCreate', async (model, options) => {
  db.logger.info('Les données ont été créées !');
});

Exemple : Écouter l'événement avant la mise à jour de données

db.on('beforeUpdate', async (model, options) => {
  db.logger.info('Les données sont sur le point d\'être mises à jour !');
});