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 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