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 PageDatenbankoperationen
Next PageResourceManager
KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

#DataSourceManager – Datenquellen-Verwaltung

NocoBase bietet den DataSourceManager zur Verwaltung mehrerer Datenquellen. Jede Datenquelle verfügt über eigene Database-, ResourceManager- und ACL-Instanzen, was Entwicklern eine flexible Verwaltung und Erweiterung mehrerer Datenquellen ermöglicht.

#Grundlegende Konzepte

Jede DataSource-Instanz enthält Folgendes:

  • dataSource.collectionManager: Dient zur Verwaltung von Sammlungen und Feldern.
  • dataSource.resourceManager: Verarbeitet ressourcenbezogene Operationen (z. B. Erstellen, Lesen, Aktualisieren, Löschen – CRUD).
  • dataSource.acl: Zugriffssteuerung (ACL) für Ressourcenoperationen.

Für einen bequemen Zugriff stehen Ihnen Aliasnamen für die Mitglieder der Haupt-Datenquelle zur Verfügung:

  • app.db ist äquivalent zu dataSourceManager.get('main').collectionManager.db
  • app.acl ist äquivalent zu dataSourceManager.get('main').acl
  • app.resourceManager ist äquivalent zu dataSourceManager.get('main').resourceManager

#Häufig verwendete Methoden

#dataSourceManager.get(dataSourceKey)

Diese Methode gibt die angegebene DataSource-Instanz zurück.

const dataSource = dataSourceManager.get('main');

#dataSourceManager.use()

Registrieren Sie Middleware für alle Datenquellen. Dies beeinflusst Operationen auf allen Datenquellen.

dataSourceManager.use((ctx, next) => {
  console.log('This middleware applies to all data sources.');
  await next();
});

#dataSourceManager.beforeAddDataSource()

Wird vor dem Laden einer Datenquelle ausgeführt. Häufig für die Registrierung statischer Klassen verwendet, z. B. für Modellklassen und Feldtypen:

dataSourceManager.beforeAddDataSource((dataSource: DataSource) => {
  const collectionManager = dataSource.collectionManager;
  if (collectionManager instanceof SequelizeCollectionManager) {
    collectionManager.registerFieldTypes({
      belongsToArray: BelongsToArrayField, // Benutzerdefinierter Feldtyp
    });
  }
});

#dataSourceManager.afterAddDataSource()

Wird nach dem Laden einer Datenquelle ausgeführt. Häufig für die Registrierung von Operationen, das Festlegen der Zugriffssteuerung usw. verwendet.

dataSourceManager.afterAddDataSource((dataSource) => {
  dataSource.resourceManager.registerActionHandler('downloadXlsxTemplate', downloadXlsxTemplate);
  dataSource.resourceManager.registerActionHandler('importXlsx', importXlsx);
  dataSource.acl.allow('*', 'downloadXlsxTemplate', 'loggedIn'); // Zugriffsrechte festlegen
});

#Datenquellen-Erweiterung

Eine vollständige Beschreibung der Datenquellen-Erweiterung finden Sie im Kapitel Datenquellen-Erweiterung.