Eigenschaften
Übersicht
Abschnitt betitelt „Übersicht“Eigenschaften definieren die Spalten in Ihrer Datenbanktabelle und wie sie in der Admin-UI gerendert werden. Jede Eigenschaft hat einen type, der Folgendes bestimmt:
- Den Datenbank-Spaltentyp (über Drizzle-Schema-Generierung)
- Die Formularfeld-Komponente
- Den Tabellenzellen-Renderer
- Die Validierungsregeln
Eigenschaftstypen
Abschnitt betitelt „Eigenschaftstypen“| Typ | Beschreibung | PostgreSQL-Spalte |
|---|---|---|
string |
Text, Select, Markdown, Datei-Upload, URL, E-Mail | standardmäßig text; varchar, char oder uuid mit columnType |
number |
Ganzzahl, Dezimalzahl, Währung | integer, numeric, bigint, serial |
boolean |
True/False-Umschalter | boolean |
date |
Datum, Datum/Uhrzeit, Zeitstempel | timestamp, date |
array |
Geordnete Liste von Werten | Ein natives Array (text[], integer[], numeric[], boolean[]), wenn of eine einzelne String-, Number- oder Boolean-Property ist; sonst jsonb |
map |
Schlüssel-Wert-Objekt | jsonb |
geopoint |
Breitengrad/Längengrad-Paar | jsonb |
reference |
Eingebettete Referenz auf eine andere Entität | Der Primärschlüsseltyp des Ziels (speichert dessen ID) |
relation |
SQL-Fremdschlüssel-Beziehung | Verwendet das relations-Array |
vector |
Embedding, für Nearest-Neighbour-Suche | VECTOR(n) (pgvector) |
binary |
Rohdaten-Bytes, gelesen und geschrieben als Base64 | bytea |
Gemeinsame Eigenschaften
Abschnitt betitelt „Gemeinsame Eigenschaften“Alle Eigenschaftstypen teilen diese Optionen:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
type |
string |
Erforderlich. Datentyp (siehe oben) |
name |
string |
Anzeigebezeichnung. Standardmäßig der Eigenschaftsschlüssel, formatiert – publishDate → “Publish Date”. Setzen Sie ihn, wenn diese Ableitung nicht passt: "URL" statt “Url”. |
description |
string |
Hilfetext, der unter dem Feld angezeigt wird |
defaultValue |
any |
Standardwert für neue Entitäten. Ein Literal – ein String, eine Zahl, ein Boolean, ein Datum, eine Enum-ID oder ein map/array-Dokument – wird auch zum DEFAULT der Spalte, sodass auch eine Zeile, die nicht über das Admin-Panel eingefügt wird (die REST-API, ein Seed, psql), diesen Wert erhält |
databaseDefault |
boolean | SqlExpression |
Seit 0.25 Die Datenbank füllt die Spalte, wenn ein Create sie leer lässt: eine Spalte NOT NULL DEFAULT <expression> wie gen_random_uuid() oder nextval(…). Ein required-Feld mit dieser Option darf bei einem Create weggelassen werden, vom Admin-Formular wie von der API, und ein beim Create gesendetes null bleibt der Datenbank überlassen; beim Bearbeiten bleibt es erforderlich, und der generierte Insert-Typ macht es optional. Geben Sie den Ausdruck in der Template-Form an, die isId annimmt, databaseDefault: "sql`gen_random_uuid()`", und der Schema-Planer schreibt ihn als DEFAULT der Spalte, sodass rebase db push ihn beibehält. true deklariert einen anderswo geschriebenen DEFAULT und schreibt keinen, sodass ein Push plant, ihn zu entfernen. „Import from table“ und rebase schema introspect setzen den Ausdruck, den sie lesen |
validation |
object |
Validierungsregeln |
propertyConfig |
string |
Registrierter Eigenschafts-Konfigurationsschlüssel |
columnName |
string |
Expliziter Datenbankspaltenname (umgeht die snake_case-Konvertierung) |
callbacks |
PropertyCallbacks |
Hooks für afterRead- und beforeSave-Transformationen |
excludeFromApi |
boolean |
Diese Spalte niemals auf der API-Oberfläche erwähnen, in keiner Richtung – für einen Passwort-Hash oder ein Verifizierungstoken. Der Wert wird serverseitig weiterhin geschrieben und kann abgefragt werden; er wird aus jeder von der API ausgelieferten Zeile entfernt, für jeden Aufrufer einschließlich Admins und Service-Keys, und er fehlt in den generierten Typen Row, Insert und Update sowie im OpenAPI-Schema. Syntax-Zucker für access: { read: [], write: [] } – beides ist derselbe Mechanismus, und das Setzen von beidem für dieselbe Eigenschaft wird beim Start abgelehnt |
access |
{ read?: string[]; write?: string[] } |
Wer dieses einzelne Feld lesen und schreiben darf, nach Rolle. Eine weggelassene Liste delegiert an die Sicherheitsregeln der Zeile; [] bedeutet niemand über die API; eine Rollenliste umfasst diese Rollen plus admin. Ein nicht lesbares Feld ist in Antworten nicht vorhanden statt null, und ein Schreibzugriff, der ein nicht beschreibbares Feld benennt, führt zu einem 400-Fehler. Siehe Feldzugriff |
metadata |
Record<string, unknown> |
Alles, was Ihr eigener Code an eine Eigenschaft anhängen muss. Rebase liest dies nicht; es bleibt bei der Serialisierung unverändert erhalten |
dynamicProps |
function |
Dynamischer Eigenschafts-Builder (siehe Bedingte Felder). Nur Admin-Formular – wird von der API oder Datenbank nicht erzwungen. |
conditions |
PropertyConditions |
Deklarative JSON Logic-Bedingungen. Nur Admin-Formular – wird von der API oder Datenbank nicht erzwungen. |
UI-Konfiguration (admin)
Abschnitt betitelt „UI-Konfiguration (admin)“UI-bezogene Optionen sind unter dem Unterobjekt admin verschachtelt:
price: { type: "number", name: "Price", admin: { readOnly: true, columnWidth: 120, hideFromCollection: false }}| Eigenschaft | Typ | Beschreibung |
|---|---|---|
admin.readOnly |
boolean |
Bearbeitung verhindern |
admin.disabled |
boolean | PropertyDisabledConfig |
Deaktivieren mit optionalem Tooltip |
admin.filledByServer |
boolean |
Der Server befüllt das Feld, wenn ein neuer Datensatz es leer lässt (ein beforeSave-Hook). Das Formular lässt eine Erstellung ohne dieses Feld durch; beim Bearbeiten bleibt es erforderlich, und die eigenen Prüfungen des Servers gelten weiterhin |
admin.hideFromCollection |
boolean |
In der Tabellenansicht ausblenden. Nur Darstellung: Die verknüpften Zeilen einer ausgeblendeten Relationseigenschaft sind weiterhin in den Listen-Read eingebettet (siehe Relationen) |
admin.columnWidth |
number |
Spaltenbreite in Pixeln (Tabellenansicht) |
admin.span |
1 | 2 | 3 | 4 |
Feldbreite im vierspaltigen Formularraster |
admin.Field |
React.ComponentType |
Eigene Feldkomponente |
admin.Preview |
React.ComponentType |
Eigene Tabellenzellen-Komponente |
admin.Filter |
React.ComponentType |
Eigenes Filterfeld für diese Eigenschaft. Hat Vorrang vor dem Sammlungs-Override Collection.FilterField und dem integrierten typbasierten Feld |
admin.filterOperators |
WhereFilterOp[] |
Schränkt die beim Filtern dieser Eigenschaft angebotenen Operatoren ein. Die angebotene Menge ist die Schnittmenge aus den Fähigkeiten der Engine, den Standardwerten des Typs und dieser Liste – Sie können nur einschränken, niemals einen Operator hinzufügen, den die Engine nicht ausführen kann. [] deaktiviert das Filtern für diese Eigenschaft |
admin.customProps |
unknown |
Alles, was Ihr eigenes Field oder Preview benötigt. Rebase reicht dies unverändert durch |
PropertyDisabledConfig
Abschnitt betitelt „PropertyDisabledConfig“Die Objektform von admin.disabled. Das Steuerelement bleibt sichtbar und ausgegraut,
was der Unterschied zu admin.readOnly ist – der Betrachter kann die Struktur dessen
sehen, was er nicht ausfüllen darf.
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
disabledMessage |
string |
Grund, warum diese Eigenschaft deaktiviert ist, angezeigt für den Benutzer. Ohne diesen erklärt ein ausgegrautes Steuerelement nichts |
clearOnDisabled |
boolean |
Setzt den Wert auf null, wenn die Eigenschaft deaktiviert wird, damit keine veraltete Angabe mit der Entität gespeichert wird |
hidden |
boolean |
Blendet das Feld vollständig aus, während es deaktiviert ist, anstatt es auszugrauen |
String-Eigenschaften
Abschnitt betitelt „String-Eigenschaften“Der Typ string ist der vielseitigste – je nachdem, welche Optionen Sie setzen, wird er als unterschiedliche Widgets gerendert.
Textfeld
Abschnitt betitelt „Textfeld“Ein einfaches einzeiliges Texteingabefeld.
name: { type: "string", name: "Name", validation: { required: true, min: 2, max: 200 }}Mehrzeiliger Text
Abschnitt betitelt „Mehrzeiliger Text“Setzen Sie admin.multiline, um das Feld als Textarea zu rendern. Dies ändert, wie das
Feld gezeichnet wird, nicht, was die Spalte enthält; daher befindet es sich im admin-Block
zusammen mit den übrigen Darstellungsoptionen.
description: { type: "string", name: "Description", admin: { multiline: true }}Markdown-Editor
Abschnitt betitelt „Markdown-Editor“Setzen Sie admin.markdown, um einen vollständigen Markdown-Editor mit Toolbar zu rendern.
body: { type: "string", name: "Blog text", admin: { markdown: true }}E-Mail-Feld
Abschnitt betitelt „E-Mail-Feld“Setzen Sie email: true, um eine E-Mail-Formatvalidierung hinzuzufügen und mit einem E-Mail-Symbol zu rendern.
email: { type: "string", name: "User email", email: true, validation: { required: true }}URL-Feld
Abschnitt betitelt „URL-Feld“Setzen Sie url: true, um eine URL-Formatvalidierung hinzuzufügen und mit einem Link-Symbol zu rendern.
website: { type: "string", name: "Amazon link", url: true}Datei-Upload
Abschnitt betitelt „Datei-Upload“Setzen Sie storage, um eine Datei-Upload-Dropzone zu rendern. Die Spalte bleibt ein String – in
sie wird der Schlüssel des Objekts im Bucket geschrieben:
avatar: { type: "string", name: "Main image", storage: { storagePath: "avatars", acceptedFiles: ["image/*"] }}Alle Optionen innerhalb von storage und die Mehrdatei-Form desselben Feldes finden Sie unter
Datei-Uploads.
Select (Enum)
Abschnitt betitelt „Select (Enum)“Setzen Sie enum, um ein Auswahl-Dropdown zu rendern. Weitere Informationen finden Sie unter Enum-Werte.
category: { type: "string", name: "Category", enum: [ { id: "electronics", label: "Electronics", color: "blueDark" }, { id: "clothing", label: "Clothing", color: "pink" }, ]}Multi-Select
Abschnitt betitelt „Multi-Select“Mehrere Werte aus einer festen Menge sind ein Array eines Enum-Strings, kein Flag
auf einem einzelnen Wert: Die Spalte enthält mehrere Werte, daher ist die Eigenschaft,
die sie beschreibt, das Array. Es ist eine einzelne Postgres-Spalte, ein text[], statt eines Joins: Ein Array,
dessen of eine einzelne String-Property ist, erhält standardmäßig ein natives Array, und das
columnType unten sagt es nur ausdrücklich.
locales: { type: "array", name: "Available locales", columnType: "text[]", of: { type: "string", name: "Locale", enum: [ { id: "es", label: "Spanish", color: "pink" }, { id: "en", label: "English", color: "blueLight" }, { id: "fr", label: "French", color: "purpleLight" }, ] }}String-Optionen
Abschnitt betitelt „String-Optionen“| Eigenschaft | Typ | Beschreibung |
|---|---|---|
admin.multiline |
boolean |
Als Textarea rendern |
admin.markdown |
boolean |
Als Markdown-Editor rendern |
email |
boolean |
Validierung des E-Mail-Formats |
url |
boolean |
Validierung des URL-Formats |
storage |
StorageConfig |
Datei-Upload aktivieren – siehe Datei-Uploads |
enum |
EnumValues |
Als Auswahl-Dropdown rendern |
columnType |
"varchar" | "text" | "char" | "uuid" |
Die Datenbankspalte. Standardmäßig text oder uuid, wenn isId dies vorgibt. text für unbegrenzte Strings, char für feste Breite |
isId |
boolean | string |
Markiert die Eigenschaft als Primärschlüssel und bestimmt, wer ihn befüllt: "manual" (Sie selbst), "uuid" (gen_random_uuid()) oder jeder andere String, der unverändert als SQL-Standardausdruck der Spalte verwendet wird – direkt (nanoid()) oder in Template-Form ("sql`nanoid()`"). Die Funktion muss existieren; hier wird nichts erstellt. "increment" ist eine Number-Strategie und bewirkt hier nichts, und "cuid" wird beim Laden der Konfiguration abgelehnt |
autoValue |
"user_on_create" | "user_on_update" |
Stempelt die Spalte mit der uid des ausführenden Benutzers – nur beim Erstellen oder bei jedem Schreibvorgang. Siehe Audit-Spalten |
userSelect |
boolean |
Als Benutzerauswahl rendern. Der Wert ist eine einfache String-Spalte, die die Benutzer-ID enthält – beim Eingang wird nichts aufgelöst oder geprüft. Nur Admin-Formular – wird von der API oder der Datenbank nicht erzwungen. Die Auswahl listet Namen, E-Mail-Adressen und Avatare der Benutzer für jeden auf, der die Collection beschreiben darf, über GET /api/admin/users/pick, ohne den Scope users:read. Eine Collection, deren Schreibregeln rohes SQL sind, zählt nicht, da sie sich nicht vorab beurteilen lassen: Dort können nur Inhaber von users:read auswählen. |
admin.previewAsTag |
boolean |
Diesen String in der Vorschau als Tag rendern |
admin.clearable |
boolean |
Symbol zum Leeren des Werts hinzufügen (auf null setzen) |
admin.urlPreview |
PreviewType |
Wie ein String gerendert werden soll, der eine URL enthält: als Link oder als Inline-Vorschau für Bild, Audio oder Video. Reine Darstellung – ob der Wert eine URL ist, entscheidet das url-Flag an der Eigenschaft, aus dem der OpenAPI-Vertrag generiert wird |
Audit-Spalten
Abschnitt betitelt „Audit-Spalten“autoValue bei einem String ist das created_by / updated_by-Gegenstück derselben
Option bei einem Date:
createdBy: { type: "string", name: "Created by", autoValue: "user_on_create", admin: { readOnly: true }},
updatedBy: { type: "string", name: "Updated by", autoValue: "user_on_update"}Der Wert stammt aus dem Aufrufkontext, niemals aus dem Request-Body – der Treiber überschreibt alles, was übermittelt wurde, sodass ein Aufrufer sich nicht als jemand anderes ausgeben kann, indem er das Feld mitsendet. Eine Spalte, deren Wert der Aufrufer bereitstellt, ist keine Audit-Spalte.
Ohne agierenden Benutzer – bei einer anonymen Anfrage, einem Service-Token oder einem Seed-Skript –
wird die Spalte auf null gesetzt. In Kombination mit validation: { required: true } wird
daraus stattdessen ein 400-Fehler: Eine Collection, die darauf besteht zu wissen, wer eine
Zeile geschrieben hat, kann keine anonymen Schreibzugriffe akzeptieren.
Es gibt keinen Fremdschlüssel. Die UID ist ein String, der Benutzerspeicher kann eine völlig andere Datenbank sein, und ein gelöschter Benutzer darf den Audit-Trail nicht mit sich reißen – deklarieren Sie eine Relation, wenn Sie den Join wünschen.
Number-Eigenschaften
Abschnitt betitelt „Number-Eigenschaften“price: { type: "number", name: "Price", validation: { required: true, min: 0 }}
quantity: { type: "number", name: "Quantity", columnType: "integer" // Store as integer}Zahlenfelder werden als Standard-Texteingabefeld mit numerischer Validierung gerendert.
Number-Optionen
Abschnitt betitelt „Number-Optionen“| Eigenschaft | Typ | Beschreibung |
|---|---|---|
enum |
EnumValues |
Als Select mit numerischen Werten rendern. Im Gegensatz zu einem String-Enum wird hierbei kein Postgres-Enum-Typ erstellt – die Spalte bleibt NUMERIC oder INTEGER, sodass das Panel die Werte anbietet, die Datenbank sie jedoch nicht erzwingt |
columnType |
string |
"integer", "real", "double precision", "numeric", "bigint", "serial", "bigserial". Standardmäßig integer, wenn validation.integer oder isId besagt, dass der Wert ganzzahlig ist, andernfalls numeric |
precision / scale |
number |
Gesamtzahl der signifikanten Stellen und Nachkommastellen bei einer numeric-Spalte – NUMERIC(10, 2). Geldbeträge ohne diese Angaben sind ein unbegrenztes NUMERIC, das alles speichert, was der Aufrufer gesendet hat, und später nicht ohne Umschreiben der Spalte eingeschränkt werden kann |
isId |
boolean | string |
Markiert die Eigenschaft als Primärschlüssel: "manual", "increment" oder jeder andere String, der unverändert als SQL-Standardausdruck der Spalte verwendet wird. "increment" ist immer INTEGER GENERATED BY DEFAULT AS IDENTITY – ein daneben stehender columnType wird mit einer Warnung ignoriert, da jeder Fremdschlüssel, der auf einen numerischen Schlüssel verweist, INTEGER ist und ein breiterer Schlüssel von schmaleren Spalten referenziert werden würde |
admin.clearable |
boolean |
Symbol zum Leeren des Werts hinzufügen (auf null setzen) |
admin.format |
NumberFormatOptions |
Schreibt die Zahl als Währung, Prozentsatz oder mit festen Dezimalstellen aus. Fehlt diese Angabe, wird der Rohwert dargestellt – eine Zahl in der Datenbank wird so angezeigt, wie sie in der Datenbank steht |
NumberFormatOptions
Abschnitt betitelt „NumberFormatOptions“Reine Darstellung. Der gespeicherte Wert ändert sich nie – eine gerundete Anzeige bleibt in der Spalte und in der API die vollständige Zahl.
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
style |
"decimal" | "currency" | "percent" |
Standardmäßig "decimal". "currency" erfordert currency |
currency |
string |
ISO-4217-Code – "EUR", "USD". Das Setzen impliziert style: "currency", daher genügt im Regelfall ein Schlüssel |
locale |
string |
BCP-47-Tag. Standardmäßig das Gebietsschema des Panels, wodurch derselbe Betrag für einen Leser als 1,234.50 und für einen anderen als 1.234,50 angezeigt wird |
minimumFractionDigits |
number |
Mit mindestens so vielen Nachkommastellen auffüllen – 2 formatiert 5 als 5.00 |
maximumFractionDigits |
number |
Auf höchstens so viele Nachkommastellen runden. Ändert nicht den gespeicherten Wert |
notation |
"standard" | "compact" |
"compact" rendert 12000 als 12K. Nützlich in einer schmalen Tabellenspalte |
Boolean-Eigenschaften
Abschnitt betitelt „Boolean-Eigenschaften“active: { type: "boolean", name: "Selectable", defaultValue: true}Booleans werden als Umschalter (Toggle Switch) gerendert.
Date-Eigenschaften
Abschnitt betitelt „Date-Eigenschaften“Nur Datum
Abschnitt betitelt „Nur Datum“Setzen Sie mode: "date", um eine Datumsauswahl ohne Uhrzeit anzuzeigen.
event_date: { type: "date", name: "Expiry date", mode: "date"}Datum und Uhrzeit
Abschnitt betitelt „Datum und Uhrzeit“Der Standardmodus "date_time" beinhaltet sowohl Datum als auch Uhrzeit.
arrival_time: { type: "date", name: "Arrival time", mode: "date_time"}Automatische Zeitstempel
Abschnitt betitelt „Automatische Zeitstempel“Verwenden Sie autoValue, um Zeitstempel beim Erstellen oder Aktualisieren automatisch zu setzen.
createdAt: { type: "date", name: "Created At", autoValue: "on_create", admin: { readOnly: true }}
updatedAt: { type: "date", name: "Updated At", autoValue: "on_update"}on_update ist ein Datenbank-Trigger, nicht nur ein Stempel auf Anwendungsebene. Rebase
schreibt die Spalte bei jedem Speichervorgang – sodass ein beforeSave-Hook den neuen Wert
sieht – und richtet einen BEFORE UPDATE-Trigger ein, der sie für alle anderen schreibt.
Ohne den Trigger würde ein Seed-Skript, ein Migrations-Backfill oder eine in psql korrigierte
Zeile dazu führen, dass die Spalte behauptet, die Zeile habe sich nicht geändert; alles,
was sie liest, um zu entscheiden, was neu indiziert oder erneut gesendet werden soll, würde
diese Zeile überspringen.
Der Trigger wird in .rebase/sql/triggers.sql generiert und von rebase db push sowie beim
Start durch die Schema-Prüfung angewendet – Atlas kann ihn aus demselben Grund nicht verwalten,
aus dem es die Volltextsuch-Helfer nicht verwalten kann.
Date-Optionen
Abschnitt betitelt „Date-Optionen“| Eigenschaft | Typ | Beschreibung |
|---|---|---|
mode |
"date" | "date_time" |
Nur Datum oder Datum + Uhrzeit (Standard: "date_time"). Bestimmt das Widget; die Spalte ist in beiden Fällen dieselbe. Nur Admin-Formular – wird von der API oder der Datenbank nicht erzwungen. |
autoValue |
"on_create" | "on_update" |
Zeitstempel automatisch setzen. on_create ist ein DEFAULT now(); on_update ist ein BEFORE UPDATE-Trigger sowie ein Stempel auf Anwendungsebene, sodass ein direktes UPDATE aus einem Seed oder einer Migration die Spalte ebenfalls aktualisiert |
columnType |
"timestamp" | "date" | "time" |
Die Datenbankspalte. Standardmäßig timestamp mit Zeitzone. Eine date-Spalte wird als Tag ausgewählt und angezeigt, was auch immer mode sagt; eine time-Spalte als reine Tageszeit in UTC ohne Tag (sie wird als diese Uhrzeit am 1970-01-01 übertragen) |
timezone |
string |
In welcher Zeitzone die Auswahl den Wert liest und schreibt. Nur Admin-Formular – wird von der API oder der Datenbank nicht erzwungen. |
admin.clearable |
boolean |
Symbol zum Leeren des Werts hinzufügen (auf null setzen) |
Array- und Map-Eigenschaften
Abschnitt betitelt „Array- und Map-Eigenschaften“Die beiden zusammengesetzten Typen – eine wiederholbare Liste und ein strukturiertes Objekt, beide als JSONB gespeichert, es sei denn, ein natives Postgres-Array passt. Wiederholungen, Block-Editoren, Gruppen, Schlüssel-Wert-Editoren und alle Optionen, die beide annehmen, finden Sie unter Arrays und Maps.
Geopoint-Eigenschaften
Abschnitt betitelt „Geopoint-Eigenschaften“Ein Breitengrad/Längengrad-Paar, gespeichert als jsonb – { latitude, longitude }, was
dem entspricht, was der generierte TypeScript-Typ, das OpenAPI-Schema und das Formularfeld
beschreiben.
location: { type: "geopoint", name: "Location"}Schreibvorgänge haben dieselbe Struktur oder verwenden einen GeoPoint aus @rebasepro/types:
new GeoPoint(41.4036, 2.1744).
Es gibt keine weiteren Optionen über die hinaus, die jede Eigenschaft hat. Die Spalte ist räumlich nicht indiziert, und es gibt keinen Distanzoperator zum Filtern: Ein Geopoint ist ein Wert, den Sie speichern und anzeigen, nicht einer, nach dem Sie suchen. Modellieren Sie dafür die beiden Zahlen als eigene Spalten.
Reference-Eigenschaften
Abschnitt betitelt „Reference-Eigenschaften“Referenzen verknüpfen mit Entitäten in einer anderen Collection. Sie werden als Vorschaukarte gerendert, die die Details der referenzierten Entität anzeigt.
client: { type: "reference", name: "Related client", path: "clients", admin: { previewProperties: ["first_name", "last_name", "email"] }}Unter Postgres ist eine reference ein Fremdschlüssel wie jeder andere und folgt daher
derselben ON DELETE-Regel wie eine belongsTo-Relation: optional ist SET NULL, erforderlich
ist RESTRICT. Siehe Relationen.
Reference- & Relation-Optionen
Abschnitt betitelt „Reference- & Relation-Optionen“Diese gelten sowohl für reference- als auch für relation-Eigenschaften.
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
admin.fixedFilter |
FilterValues |
Filtert die im Auswahl-Widget angebotenen Entitäten |
admin.widget |
"select" | "dialog" |
Welches Widget die zugehörige Entität auswählt (nur Relationen) |
admin.includeId |
boolean |
Zeigt die ID der zugehörigen Entität in der Vorschau an (Standard: true) |
admin.includeEntityLink |
boolean |
Zeigt einen Link an, der die zugehörige Entität öffnet (Standard: true) |
admin.previewProperties |
string[] |
Welche Eigenschaften des Ziels in der Vorschau angezeigt werden (max. 3) |
admin.renderInForm |
boolean |
Rendert eine Many-Relation als Auswahl innerhalb des Formulars zusätzlich zu dem Tab, den sie bereits erhält. Standardmäßig false: Die Entitätsansicht listet die zugehörigen Zeilen bereits als Tab auf, sodass die beiden Oberflächen von Haus aus redundant sind. Keine Auswirkung auf eine To-One-Relation, die keinen Tab erhält |
Vector-Eigenschaften
Abschnitt betitelt „Vector-Eigenschaften“Eine Embedding-Spalte für die Nearest-Neighbour-Suche. Nur Postgres.
embedding: { type: "vector", name: "Embedding", dimensions: 1536}| Eigenschaft | Typ | Beschreibung |
|---|---|---|
dimensions |
number |
Erforderlich. Länge des Vektors. Kompiliert zu VECTOR(n). |
index |
VectorIndexConfig | false |
Wie der ANN-Index aufgebaut wird. Wenn weggelassen, ein HNSW-Index für Kosinus-Distanz. false erstellt keinen. |
Ein ANN-Index wird zusammen mit der Spalte erstellt, sodass vectorSearch approximativ und
schnell ist anstatt eines exakten Scans. Er ist für Kosinus-Distanz ausgelegt, womit
vectorSearch misst, sofern Sie kein distance übergeben – ein Index bedient genau einen
Operator, sodass eine l2-Abfrage für einen Kosinus-Index stillschweigend auf einen Scan
zurückfällt. method (hnsw oder ivfflat), distance (eine oder mehrere), m,
efConstruction und lists befinden sich alle auf index. Über 2000 Dimensionen kann pgvector
keinen der beiden Indextypen erstellen, daher bleibt die Spalte unindiziert und der Start meldet
dies.
Fragen Sie ihn mit .vectorSearch() ab,
wo auch beschrieben wird, was für die Installation von pgvector erforderlich ist und wie
der Index optimiert wird. Für gewöhnliche btree-, GIN- und BRIN-Indizes auf beliebigen
Collections siehe Indizes.
Binary-Eigenschaften
Abschnitt betitelt „Binary-Eigenschaften“Rohdaten-Bytes, gespeichert als bytea. Werte passieren die API als Base64-Strings –
einschließlich defaultValue.
signature: { type: "binary", name: "Signature"}Große Dateien gehören in den Speicher (Storage), nicht in eine Spalte:
Ein bytea wird im Ganzen mit der Zeile gelesen und geschrieben.
Enum-Werte, Validierungsregeln und bedingte Felder haben eine eigene Seite: Validierung und Bedingungen.
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“- Relationen — Fremdschlüssel und Joins
- Sicherheitsregeln — Row Level Security
- Eigene Felder — Eigene Feldkomponenten erstellen