Diese Dokumentation wurde automatisch von KI übersetzt.
Die Verwaltungs-Klasse für Sammlungsfelder (abstrakte Klasse). Sie ist auch die Basisklasse für alle Feldtypen. Jeder andere Feldtyp wird durch die Vererbung dieser Klasse implementiert.
Informationen zur Anpassung von Feldern finden Sie unter [Feldtypen erweitern].
Dieser wird normalerweise nicht direkt von Entwicklern aufgerufen, sondern hauptsächlich über die Methode db.collection({ fields: [] }) als Proxy-Einstiegspunkt.
Beim Erweitern eines Feldes wird dies hauptsächlich durch die Vererbung der abstrakten Klasse Field und die anschließende Registrierung in der Datenbank-Instanz erreicht.
Signatur
constructor(options: FieldOptions, context: FieldContext)Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
options | FieldOptions | - | Feldkonfigurations-Objekt |
options.name | string | - | Feldname |
options.type | string | - | Feldtyp, entspricht dem in der Datenbank registrierten Feldtypnamen |
context | FieldContext | - | Feld-Kontextobjekt |
context.database | Database | - | Datenbank-Instanz |
context.collection | Collection | - | Sammlungs-Instanz |
nameDer Feldname.
typeDer Feldtyp.
dataTypeDer Datenbank-Speichertyp des Feldes.
optionsDie Initialisierungs-Konfigurationsparameter des Feldes.
contextDas Feld-Kontextobjekt.
on()Eine Kurzdefinition basierend auf Sammlungsereignissen. Entspricht db.on(this.collection.name + '.' + eventName, listener).
Beim Erben ist es normalerweise nicht notwendig, diese Methode zu überschreiben.
Signatur
on(eventName: string, listener: (...args: any[]) => void)Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
eventName | string | - | Ereignisname |
listener | (...args: any[]) => void | - | Ereignis-Listener |
off()Eine Kurzmethode zum Entfernen basierend auf Sammlungsereignissen. Entspricht db.off(this.collection.name + '.' + eventName, listener).
Beim Erben ist es normalerweise nicht notwendig, diese Methode zu überschreiben.
Signatur
off(eventName: string, listener: (...args: any[]) => void)Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
eventName | string | - | Ereignisname |
listener | (...args: any[]) => void | - | Ereignis-Listener |
bind()Der Inhalt, der ausgeführt wird, wenn ein Feld zu einer Sammlung hinzugefügt wird. Wird normalerweise verwendet, um Sammlungsereignis-Listener und andere Verarbeitungen hinzuzufügen.
Beim Erben müssen Sie zuerst die entsprechende super.bind()-Methode aufrufen.
Signatur
bind()unbind()Der Inhalt, der ausgeführt wird, wenn ein Feld aus einer Sammlung entfernt wird. Wird normalerweise verwendet, um Sammlungsereignis-Listener und andere Verarbeitungen zu entfernen.
Beim Erben müssen Sie zuerst die entsprechende super.unbind()-Methode aufrufen.
Signatur
unbind()get()Ruft den Wert einer Konfigurationsoption des Feldes ab.
Signatur
get(key: string): anyParameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
key | string | - | Name der Konfigurationsoption |
Beispiel
merge()Führt die Werte der Konfigurationsoptionen eines Feldes zusammen.
Signatur
merge(options: { [key: string]: any }): voidParameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
options | { [key: string]: any } | - | Das zusammenzuführende Konfigurations-Objekt |
Beispiel
remove()Entfernt das Feld aus der Sammlung (nur aus dem Speicher).
Beispiel
removeFromDb()Entfernt das Feld aus der Datenbank.
Signatur
removeFromDb(options?: Transactionable): Promise<void>Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
options.transaction? | Transaction | - | Transaktions-Instanz |
existsInDb()Prüft, ob das Feld in der Datenbank existiert.
Signatur
existsInDb(options?: Transactionable): Promise<boolean>Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
options.transaction? | Transaction | - | Transaktions-Instanz |
NocoBase enthält einige häufig verwendete Feldtypen. Sie können den entsprechenden Typnamen direkt verwenden, um den Typ beim Definieren von Feldern für eine Sammlung anzugeben. Verschiedene Feldtypen haben unterschiedliche Parameterkonfigurationen. Details finden Sie in der folgenden Liste.
Alle Konfigurationsoptionen für Feldtypen, mit Ausnahme der unten zusätzlich beschriebenen, werden an Sequelize weitergeleitet. Daher können alle von Sequelize unterstützten Feldkonfigurationsoptionen hier verwendet werden (z. B. allowNull, defaultValue usw.).
Darüber hinaus lösen die serverseitigen Feldtypen hauptsächlich Probleme der Datenbankspeicherung und bestimmter Algorithmen und sind im Wesentlichen unabhängig von den Frontend-Feldanzeigetypen und verwendeten Komponenten. Für Frontend-Feldtypen beachten Sie bitte die entsprechenden Anweisungen im Tutorial.
'boolean'Logischer Werttyp (Boolean).
Beispiel
'integer'Ganzzahltyp (32-Bit).
Beispiel
'bigInt'Großer Ganzzahltyp (64-Bit).
Beispiel
'double'Gleitkommatyp mit doppelter Genauigkeit (64-Bit).
Beispiel
'real'Reelle Zahl (nur für PostgreSQL).
'decimal'Dezimalzahltyp.
'string'Zeichenkettentyp. Entspricht dem VARCHAR-Typ in den meisten Datenbanken.
Beispiel
'text'Texttyp. Entspricht dem TEXT-Typ in den meisten Datenbanken.
Beispiel
'password'Passworttyp (NocoBase-Erweiterung). Verschlüsselt Passwörter basierend auf der scrypt-Methode des nativen Node.js crypto-Pakets.
Beispiel
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
length | number | 64 | Zeichenlänge |
randomBytesSize | number | 8 | Größe der Zufallsbytes |
'date'Datumstyp.
'time'Zeittyp.
'array'Array-Typ (nur für PostgreSQL).
'json'JSON-Typ.
'jsonb'JSONB-Typ (nur für PostgreSQL, andere werden als 'json'-Typ kompatibel gemacht).
'uuid'UUID-Typ.
'uid'UID-Typ (NocoBase-Erweiterung). Kurzer, zufälliger Zeichenketten-Identifikatortyp.
'formula'Formeltyp (NocoBase-Erweiterung). Ermöglicht die Konfiguration von mathematischen Formelberechnungen basierend auf mathjs. Die Formel kann Werte aus anderen Spalten desselben Datensatzes für die Berechnung referenzieren.
Beispiel
'radio'Radio-Typ (NocoBase-Erweiterung). In der gesamten Sammlung kann höchstens eine Zeile den Wert true für dieses Feld haben; alle anderen sind false oder null.
Beispiel
Im gesamten System gibt es nur einen als root markierten Benutzer. Wenn der root-Wert eines anderen Benutzers auf true geändert wird, werden alle anderen Datensätze, bei denen root true ist, auf false geändert:
'sort'Sortier-Typ (NocoBase-Erweiterung). Sortiert basierend auf Ganzzahlen, generiert automatisch eine neue Sequenznummer für neue Datensätze und ordnet die Sequenznummern neu an, wenn Daten verschoben werden.
Wenn eine Sammlung die Option sortable definiert, wird auch ein entsprechendes Feld automatisch generiert.
Beispiel
Beiträge können basierend auf dem zugehörigen Benutzer sortiert werden:
'virtual'Virtueller Typ. Speichert keine Daten, wird nur für spezielle Getter/Setter-Definitionen verwendet.
'belongsTo'Many-to-one-Assoziationstyp. Der Fremdschlüssel wird in der eigenen Tabelle gespeichert, im Gegensatz zu hasOne/hasMany.
Beispiel
Jeder Beitrag gehört einem bestimmten Autor:
'hasOne'One-to-one-Assoziationstyp. Der Fremdschlüssel wird in der verknüpften Tabelle gespeichert, im Gegensatz zu belongsTo.
Beispiel
Jeder Benutzer hat ein Profil:
'hasMany'One-to-many-Assoziationstyp. Der Fremdschlüssel wird in der verknüpften Tabelle gespeichert, im Gegensatz zu belongsTo.
Beispiel
Jeder Benutzer kann mehrere Beiträge haben:
'belongsToMany'Many-to-many-Assoziationstyp. Verwendet eine Zwischentabelle zur Speicherung der Fremdschlüssel beider Seiten. Wenn keine vorhandene Tabelle als Zwischentabelle angegeben wird, wird automatisch eine Zwischentabelle erstellt.
Beispiel
Jeder Beitrag kann beliebig viele Tags haben, und jeder Tag kann zu beliebig vielen Beiträgen hinzugefügt werden: