Sammlungen (Collections)
Bei der Entwicklung von NocoBase-Plugins ist die Sammlung (Collection) eines der zentralen Konzepte. Sie können die Struktur von Datentabellen in Ihren Plugins hinzufügen oder ändern, indem Sie Sammlungen definieren oder erweitern. Im Gegensatz zu Datentabellen, die über die Oberfläche der Datenquellenverwaltung erstellt werden, handelt es sich bei im Code definierten Sammlungen in der Regel um Metadatentabellen auf Systemebene, die nicht in der Liste der Datenquellenverwaltung erscheinen.
Datentabellen definieren
Gemäß der konventionellen Verzeichnisstruktur sollten Sammlungsdateien im Verzeichnis ./src/server/collections abgelegt werden. Verwenden Sie defineCollection(), um neue Tabellen zu erstellen, und extendCollection(), um bestehende Tabellen zu erweitern.
Im obigen Beispiel:
name: Der Tabellenname (eine Tabelle mit demselben Namen wird automatisch in der Datenbank generiert).title: Der Anzeigename der Tabelle in der Benutzeroberfläche.fields: Eine Sammlung von Feldern, wobei jedes Feld Attribute wietype,nameusw. enthält.
Wenn Sie Felder hinzufügen oder Konfigurationen für Sammlungen anderer Plugins ändern müssen, können Sie extendCollection() verwenden:
Nach der Aktivierung des Plugins fügt das System das Feld isPublished automatisch der bestehenden articles-Tabelle hinzu.
Die konventionelle Verzeichnisstruktur wird geladen, bevor die load()-Methoden aller Plugins ausgeführt werden. Dadurch werden Abhängigkeitsprobleme vermieden, die durch nicht geladene Datentabellen entstehen könnten.
Feldtypen im Überblick
In den fields von defineCollection bestimmt type den Spaltentyp des Feldes in der Datenbank. Nachfolgend finden Sie alle integrierten Feldtypen:
Text
Zahlen
Boolesche Werte
Datum und Uhrzeit
date ist der am häufigsten verwendete Datumstyp. Wenn Sie zwischen verschiedenen Arten der Zeitzonenbehandlung unterscheiden müssen, stehen zusätzlich datetimeTz (mit Zeitzone) und datetimeNoTz (ohne Zeitzone) zur Verfügung.
Strukturierte Daten
ID-Generierung
Spezielle Typen
Beziehungstypen
Beziehungsfelder legen keine Datenbankspalten an, sondern stellen Beziehungen zwischen Tabellen auf ORM-Ebene her:
Anwendungsbeispiel für Beziehungsfelder:
Gemeinsame Parameter
Alle Spaltenfelder unterstützen die folgenden Parameter:
Datenbankstruktur synchronisieren
Wenn ein Plugin zum ersten Mal aktiviert wird, synchronisiert das System automatisch die Sammlungs-Konfigurationen mit der Datenbankstruktur. Ist das Plugin bereits installiert und in Betrieb, müssen Sie nach dem Hinzufügen oder Ändern von Sammlungen den Upgrade-Befehl manuell ausführen:
Eine Sammlung in der Datentabellenliste der Oberfläche anzeigen
Über defineCollection definierte Tabellen sind serverseitige interne Tabellen und erscheinen standardmäßig nicht in der Liste der Datenquellenverwaltung und ebenso wenig in der Datentabellenauswahl beim Hinzufügen eines Blocks.
Empfohlenes Vorgehen: Legen Sie die entsprechende Datentabelle in der NocoBase-Oberfläche unter „Datenquellenverwaltung“ an. Sobald Sie Felder und Interface-Typen konfiguriert haben, erscheint die Tabelle automatisch in der Datentabellenauswahl des Blocks.

Falls die Registrierung tatsächlich im Plugin-Code erfolgen muss (etwa für Demonstrationsszenarien in Beispiel-Plugins), können Sie sie im clientseitigen Plugin manuell über addCollection vornehmen. Beachten Sie, dass die Registrierung zwingend über das eventBus-Muster erfolgen muss und nicht direkt in load() aufgerufen werden darf – ensureLoaded() leert nach load() alle Sammlungen und setzt sie neu. Ein vollständiges Beispiel finden Sie unter Ein Frontend-Backend-Datenmanagement-Plugin erstellen.
Ressourcen automatisch generieren
Nachdem Sie eine Sammlung definiert haben, generiert das System automatisch eine entsprechende Ressource. Auf dieser Ressource können Sie dann direkt CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) über die API ausführen. Weitere Informationen finden Sie unter Ressourcenverwaltung.
Verwandte Links
- Database — CRUD, Repository, Transaktionen und Datenbankereignisse
- DataSourceManager — Mehrere Datenquellen und deren Sammlungen verwalten
- Migration — Datenmigrationsskripte für Plugin-Upgrades
- Plugin — Lebenszyklus der Plugin-Klasse, Membermethoden und das
app-Objekt - ResourceManager — Benutzerdefinierte REST-APIs und Action-Handler
- Ein Frontend-Backend-Datenmanagement-Plugin erstellen — Vollständiges Beispiel mit defineCollection + addCollection
- Projektverzeichnisstruktur — Erläuterung der Verzeichniskonvention
src/server/collections

