Zum Inhalt springen

Arrays und Maps

Ein array ist eine geordnete Liste und eine map ist ein strukturiertes Objekt. Beide werden als jsonb gespeichert, mit Ausnahme eines Arrays von Primitiven, das zu einem nativen Postgres-Array (text[], integer[]) wird, damit die Datenbank darin indizieren und suchen kann.

Verwenden Sie of, um eine wiederholbare Liste von Elementen zu definieren.

tags: {
type: "array",
name: "Tags",
of: { type: "string" }
}

Ein Array, dessen of den storage-Block enthält, ist ein Multi-Datei-Upload – siehe Datei-Uploads.

Verwenden Sie oneOf, um einen Block-Editor mit mehreren Inhaltstypen zu erstellen. Jeder Schlüssel erzeugt einen Kartentyp, aus dem Benutzer auswählen können.

content: {
type: "array",
name: "Content",
oneOf: {
properties: {
text: {
type: "map",
properties: {
body: { type: "string", name: "Text", admin: { markdown: true } }
}
},
image: {
type: "map",
properties: {
src: { type: "string", name: "Image", storage: { storagePath: "content" } },
caption: { type: "string", name: "Caption" }
}
}
}
}
}
Property Typ Beschreibung
of Property | Property[] Property-Schema für Array-Elemente
oneOf object Array typisierter Objekte mit mehreren Diskriminator-Typen. Akzeptiert properties und optional propertiesOrder, typeField (Standard: "type") sowie valueField (Standard: "value")
columnType "json" | "jsonb" | "text[]" | "integer[]" | "boolean[]" | "numeric[]" Die Datenbankspalte. Ein primitives of verwendet standardmäßig das passende native Postgres-Array; alles andere jsonb
admin.expanded boolean Gibt an, ob das Feld anfangs ausgeklappt sein soll (Standard: true)
admin.minimalistView boolean Untergeordnete Properties direkt ohne aufklappbares Panel anzeigen
admin.sortable boolean Können Elemente neu angeordnet werden (Standard: true)
admin.canAddElements boolean Können neue Elemente hinzugefügt werden (Standard: true)

Verwenden Sie properties, um ein strukturiertes Objekt mit benannten Feldern zu definieren.

address: {
type: "map",
name: "Address",
properties: {
street: { type: "string", name: "Street" },
zip: { type: "string", name: "Postal code" }
}
}

Setzen Sie keyValue: true, um einen Editor für beliebige Schlüssel-Wert-Paare darzustellen.

metadata: {
type: "map",
name: "Key value",
keyValue: true
}
Property Typ Beschreibung
properties Properties Record von Properties, die in der Map enthalten sind
propertiesOrder string[] Geordnete Schlüssel für das Rendering
admin.previewProperties string[] Welche Properties in der Tabellenvorschau angezeigt werden sollen
admin.spreadChildren boolean Untergeordnete Properties als separate Spalten in der Tabellenansicht rendern
admin.minimalistView boolean Properties ohne umschließendes Panel anzeigen
admin.expanded boolean Gibt an, ob das Feld anfangs ausgeklappt sein soll (Standard: true)
keyValue boolean Als Editor für beliebige Schlüssel-Wert-Paare rendern. Trotz der Formulierung keine reine Darstellungsoption: Sie besagt, dass die Map keine deklarierte Struktur hat, woraus das OpenAPI-Schema generiert wird
columnType "json" | "jsonb" Die Datenbankspalte. Standardmäßig jsonb