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 PageCollections (Datentabellen)
Next PageDataSourceManager
KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

#Database

Database ist ein wichtiger Bestandteil von Datenquellen (DataSource) vom Typ Datenbank. Jede datenbankbasierte Datenquelle verfügt über eine entsprechende Database-Instanz, die Sie über dataSource.db aufrufen können. Die Database-Instanz der Haupt-Datenquelle bietet zusätzlich den praktischen Alias app.db. Die Kenntnis der gängigen db-Methoden ist die Grundlage für die Entwicklung von serverseitigen Plugins.

#Bestandteile der Database

Eine typische Database setzt sich aus den folgenden Teilen zusammen:

  • Sammlung: Definiert die Struktur von Datentabellen.
  • Model: Entspricht den ORM-Modellen (normalerweise von Sequelize verwaltet).
  • Repository: Die Repository-Schicht, die die Datenzugriffslogik kapselt und übergeordnete Operationsmethoden bereitstellt.
  • FieldType: Feldtypen.
  • FilterOperator: Operatoren, die zum Filtern verwendet werden.
  • Event: Lebenszyklus-Ereignisse und Datenbank-Ereignisse.

#Einsatzzeitpunkte in Plugins

#Geeignete Aktionen in der beforeLoad-Phase

In dieser Phase sind Datenbankoperationen nicht erlaubt. Sie eignet sich für die Registrierung statischer Klassen oder das Abonnieren von Ereignissen.

  • db.registerFieldTypes() — Benutzerdefinierte Feldtypen
  • db.registerModels() — Benutzerdefinierte Modellklassen registrieren
  • db.registerRepositories() — Benutzerdefinierte Repository-Klassen registrieren
  • db.registerOperators() — Benutzerdefinierte Filteroperatoren registrieren
  • db.on() — Datenbankbezogene Ereignisse abonnieren

#Geeignete Aktionen in der load-Phase

In dieser Phase sind alle vorhergehenden Klassendefinitionen und Ereignisse bereits geladen, sodass beim Laden von Datentabellen keine Abhängigkeiten fehlen oder übersehen werden.

  • db.defineCollection() — Neue Datentabellen definieren
  • db.extendCollection() — Bestehende Datentabellenkonfigurationen erweitern

Wenn Sie integrierte Tabellen für Plugins definieren, empfiehlt es sich, diese im Verzeichnis ./src/server/collections abzulegen. Weitere Informationen finden Sie unter Sammlungen.

#Datenoperationen

Die Database bietet zwei Hauptmethoden für den Datenzugriff und die Datenbearbeitung:

#Operationen über das Repository

const repo = db.getRepository('users');
const user = await repo.findOne({ filter: { id: 1 } });

Die Repository-Schicht wird typischerweise verwendet, um Geschäftslogik wie Paginierung, Filterung, Berechtigungsprüfungen usw. zu kapseln.

#Operationen über das Model

const UserModel = db.getModel('users');
const user = await UserModel.findByPk(1);

Die Model-Schicht entspricht direkt den ORM-Entitäten und eignet sich für Datenbankoperationen auf niedrigerer Ebene.

#In welchen Phasen sind Datenbankoperationen erlaubt?

#Plugin-Lebenszyklus

PhaseDatenbankoperationen erlaubt
staticImportNein
afterAddNein
beforeLoadNein
loadNein
installJa
beforeEnableJa
afterEnableJa
beforeDisableJa
afterDisableJa
removeJa
handleSyncMessageJa

#App-Ereignisse

PhaseDatenbankoperationen erlaubt
beforeLoadNein
afterLoadNein
beforeStartJa
afterStartJa
beforeInstallNein
afterInstallJa
beforeStopJa
afterStopNein
beforeDestroyJa
afterDestroyNein
beforeLoadPluginNein
afterLoadPluginNein
beforeEnablePluginJa
afterEnablePluginJa
beforeDisablePluginJa
afterDisablePluginJa
afterUpgradeJa

#Database-Ereignisse/Hooks

PhaseDatenbankoperationen erlaubt
beforeSyncNein
afterSyncJa
beforeValidateJa
afterValidateJa
beforeCreateJa
afterCreateJa
beforeUpdateJa
afterUpdateJa
beforeSaveJa
afterSaveJa
beforeDestroyJa
afterDestroyJa
afterCreateWithAssociationsJa
afterUpdateWithAssociationsJa
afterSaveWithAssociationsJa
beforeDefineCollectionNein
afterDefineCollectionNein
beforeRemoveCollectionNein
afterRemoveCollectionNein