Salta ai contenuti

Array e map

Un array è un elenco ordinato e una map è un oggetto strutturato. Entrambi vengono memorizzati come jsonb, ad eccezione di un array di elementi primitivi, che diventa un array Postgres nativo (text[], integer[]) in modo che il database possa indicizzarlo ed eseguire ricerche al suo interno.

Usa of per definire un elenco ripetibile di elementi.

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

Un array il cui of include il blocco storage è un caricamento multi-file — consulta Caricamento file.

Usa oneOf per creare un editor a blocchi con più tipi di contenuto. Ciascuna chiave crea un tipo di scheda tra cui gli utenti possono scegliere.

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" }
}
}
}
}
}
Proprietà Tipo Descrizione
of Property | Property[] Schema della proprietà per gli elementi dell’array
oneOf object Array di oggetti tipizzati con più tipi di discriminatore. Accetta properties e, facoltativamente, propertiesOrder, typeField (predefinito "type") e valueField (predefinito "value")
columnType "json" | "jsonb" | "text[]" | "integer[]" | "boolean[]" | "numeric[]" La colonna del database. Un of primitivo usa come valore predefinito il corrispondente array Postgres nativo; qualsiasi altra cosa usa jsonb
admin.expanded boolean Indica se il campo debba essere inizialmente espanso (predefinito: true)
admin.minimalistView boolean Mostra le proprietà figlie direttamente senza un pannello estendibile
admin.sortable boolean Indica se gli elementi possono essere riordinati (predefinito: true)
admin.canAddElements boolean Indica se è possibile aggiungere nuovi elementi (predefinito: true)

Usa properties per definire un oggetto strutturato con campi denominati.

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

Imposta keyValue: true per eseguire il rendering di un editor di coppie chiave-valore arbitrarie.

metadata: {
type: "map",
name: "Key value",
keyValue: true
}
Proprietà Tipo Descrizione
properties Properties Record di proprietà incluse nella map
propertiesOrder string[] Chiavi ordinate per il rendering
admin.previewProperties string[] Quali proprietà mostrare nell’anteprima della tabella
admin.spreadChildren boolean Esegue il rendering delle proprietà figlie come colonne separate nella vista a tabella
admin.minimalistView boolean Mostra le proprietà senza un pannello contenitore
admin.expanded boolean Indica se il campo debba essere inizialmente espanso (predefinito: true)
keyValue boolean Esegue il rendering come editor di coppie chiave-valore arbitrarie. Non si tratta solo di presentazione nonostante il termine: indica che la map non ha una struttura dichiarata, su cui si basa la generazione dello schema OpenAPI
columnType "json" | "jsonb" La colonna del database. Il valore predefinito è jsonb