logologo
Start
Handbuch
Entwickler
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
Start
Handbuch
Entwickler
Plugins
API
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!');
});