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