logologo
Start
Handbuch
Entwicklung
Plugins
API
Startseite
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Start
Handbuch
Entwicklung
Plugins
API
Startseite
logologo

Schnellstart

Plugin-Entwicklung: Überblick
Erstes Plugin schreiben
Projektverzeichnisstruktur

Serverseitige Entwicklung

Überblick
Plugin
Collections (Datentabellen)
Datenbankoperationen
DataSourceManager
ResourceManager
ACL-Zugriffskontrolle
Middleware
Cache
Events
Request-Kontext
Migration (Update-Skripte)
Logger (Protokollierung)
I18n (Internationalisierung)
Command (Befehlszeile)
CronJobManager
Tests

Clientseitige Entwicklung

Überblick
Plugin
Kontext
Router
ACL-Zugriffskontrolle
DataSourceManager
Ressourcen
Requests
Stile & Themes
Logger (Protokollierung)
I18n (Internationalisierung)
Tests

Sonstiges

Plugin-Update-Leitfaden
Sprachenliste
Abhängigkeitsverwaltung
Build
Previous PageCache
Next PageRequest-Kontext
KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

#Ereignisse

Der NocoBase-Server löst während des Anwendungslebenszyklus, des Plugin-Lebenszyklus und bei Datenbankoperationen entsprechende Ereignisse aus. Plugin-Entwickler können diese Ereignisse abonnieren, um Erweiterungslogik, automatisierte Abläufe oder benutzerdefinierte Verhaltensweisen zu implementieren.

Das Ereignissystem von NocoBase ist hauptsächlich in zwei Ebenen unterteilt:

  • app.on() - Ereignisse auf Anwendungsebene: Abonnieren Sie Lebenszyklusereignisse der Anwendung, wie zum Beispiel Start, Installation oder das Aktivieren von Plugins.
  • db.on() - Ereignisse auf Datenbankebene: Abonnieren Sie Vorgangsereignisse auf Datenmodellebene, wie zum Beispiel das Erstellen, Aktualisieren oder Löschen von Datensätzen.

Beide erben von Node.js' EventEmitter und unterstützen die Standard-Schnittstellen .on(), .off() und .emit(). NocoBase erweitert die Unterstützung zudem um emitAsync, um Ereignisse asynchron auszulösen und darauf zu warten, dass alle Listener ihre Ausführung abgeschlossen haben.

#Wo Sie Ereignis-Listener registrieren

Ereignis-Listener sollten in der Regel in der beforeLoad()-Methode des Plugins registriert werden. Dies stellt sicher, dass die Ereignisse bereits während der Ladephase des Plugins bereitstehen und die nachfolgende Logik korrekt darauf reagieren kann.

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

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

    // Anwendungereignisse abonnieren
    this.app.on('afterStart', () => {
      app.logger.info('NocoBase wurde gestartet');
    });

    // Datenbankereignisse abonnieren
    this.db.on('afterCreate', (model) => {
      if (model.collectionName === 'posts') {
        app.logger.info(`Neuer Beitrag: ${model.get('title')}`);
      }
    });
  }
}

#Anwendungereignisse abonnieren mit app.on()

Anwendungereignisse dienen dazu, Änderungen im Lebenszyklus der NocoBase-Anwendung und ihrer Plugins zu erfassen. Sie eignen sich gut für Initialisierungslogik, die Registrierung von Ressourcen oder die Erkennung von Plugin-Abhängigkeiten.

#Häufige Ereignistypen

EreignisnameAuslösezeitpunktTypische Verwendung
beforeLoad / afterLoadVor / nach dem Laden der AnwendungRessourcen registrieren, Konfiguration initialisieren
beforeStart / afterStartVor / nach dem Start des DienstesAufgaben starten, Startprotokolle ausgeben
beforeInstall / afterInstallVor / nach der AnwendungsinstallationDaten initialisieren, Vorlagen importieren
beforeStop / afterStopVor / nach dem Stoppen des DienstesRessourcen bereinigen, Status speichern
beforeDestroy / afterDestroyVor / nach der AnwendungszerstörungCache löschen, Verbindungen trennen
beforeLoadPlugin / afterLoadPluginVor / nach dem Laden des PluginsPlugin-Konfiguration ändern oder Funktionalität erweitern
beforeEnablePlugin / afterEnablePluginVor / nach dem Aktivieren des PluginsAbhängigkeiten prüfen, Plugin-Logik initialisieren
beforeDisablePlugin / afterDisablePluginVor / nach dem Deaktivieren des PluginsPlugin-Ressourcen bereinigen
afterUpgradeNach Abschluss des Anwendungs-UpgradesDatenmigration oder Kompatibilitätskorrekturen durchführen

Beispiel: Anwendung-Start-Ereignis abonnieren

app.on('afterStart', async () => {
  app.logger.info('🚀 NocoBase-Dienst wurde gestartet!');
});

Beispiel: Plugin-Ladeereignis abonnieren

app.on('afterLoadPlugin', ({ plugin }) => {
  app.logger.info(`Plugin ${plugin.name} wurde geladen`);
});

#Datenbankereignisse abonnieren mit db.on()

Datenbankereignisse können verschiedene Datenänderungen auf Modellebene erfassen. Sie eignen sich gut für Audits, Synchronisierungen, das automatische Ausfüllen von Feldern und andere Operationen.

#Häufige Ereignistypen

EreignisnameAuslösezeitpunkt
beforeSync / afterSyncVor / nach der Synchronisierung der Datenbankstruktur
beforeValidate / afterValidateVor / nach der Datenvalidierung
beforeCreate / afterCreateVor / nach dem Erstellen von Datensätzen
beforeUpdate / afterUpdateVor / nach dem Aktualisieren von Datensätzen
beforeSave / afterSaveVor / nach dem Speichern (einschließlich Erstellen und Aktualisieren)
beforeDestroy / afterDestroyVor / nach dem Löschen von Datensätzen
afterCreateWithAssociations / afterUpdateWithAssociations / afterSaveWithAssociationsNach Operationen, die verknüpfte Daten enthalten
beforeDefineCollection / afterDefineCollectionVor / nach dem Definieren von Sammlungen
beforeRemoveCollection / afterRemoveCollectionVor / nach dem Entfernen von Sammlungen

Beispiel: Ereignis nach dem Erstellen von Daten abonnieren

db.on('afterCreate', async (model, options) => {
  db.logger.info('Daten wurden erstellt!');
});

Beispiel: Ereignis vor dem Aktualisieren von Daten abonnieren

db.on('beforeUpdate', async (model, options) => {
  db.logger.info('Daten werden aktualisiert!');
});