Ein Inhaltsmodell beschreibt die Informationen, die Ihre Website speichert. In EmDash besteht das Modell aus Sammlungen und Feldern. Die Datenbank speichert dieses Modell, und das Admin-Panel verwendet es, um die Formulare zu erstellen, mit denen Redakteure arbeiten.
Sammlungen, Felder und Einträge
Eine Sammlung ist eine Art von Inhalt, wie Beiträge, Produkte oder Autoren. Ein Feld ist eine einzelne Information zu diesem Inhalt, wie ein Titel, Textkörper, Preis oder eine Autorenreferenz. Ein Eintrag ist ein gespeichertes Element in einer Sammlung.
Zum Beispiel könnte eine Beiträge-Sammlung diese Felder haben:
Posts
├── Title Kurztext, erforderlich
├── Excerpt Langtext, optional
├── Content Rich Text, optional
└── Featured image Bild, optional
EmDash verwaltet auch Informationen, die jeder Eintrag benötigt, einschließlich seiner ID, des öffentlichen Slugs, des Veröffentlichungsstatus, des Autors, der Erstellungs- und Aktualisierungszeiten, der Sprache und der Revisionsreferenzen. Abfrageergebnisse stellen diese Standardinformationen zusammen mit den für die Sammlung definierten Feldern bereit.
Das Löschen eines Eintrags verschiebt ihn in den Papierkorb, indem sein Löschzeitpunkt gesetzt wird. Ein Administrator kann ihn wiederherstellen, bis jemand ihn endgültig aus dem Papierkorb löscht. Dieser Eintrags-Workflow unterscheidet sich vom Löschen eines Feldes oder einer Sammlung, das das Schema ändert und gespeicherte Daten entfernt.
Ein Modell, zwei Verwaltungswege
Administratoren können Sammlungen unter Inhaltstypen im Admin-Panel erstellen und bearbeiten. EmDash aktualisiert das Datenbankschema, und der Inhaltseditor verwendet die Änderung beim nächsten Laden der Sammlung.
Eine Seed-Datei beschreibt ein Ausgangsmodell in JSON. Vorlagen verwenden Seeds, um Sammlungen und andere Website-Daten während der Einrichtung zu erstellen. Teams können auch einen Seed in der Versionskontrolle pflegen und ihn beim Erstellen einer anderen Umgebung anwenden. Das Admin-Panel und ein Seed erstellen keine separaten Modelle; beide ändern das in der Zieldatenbank gespeicherte Modell.
Das folgende Seed-Fragment definiert die vier benutzerdefinierten Felder im Beiträge-Beispiel:
{
"version": "1",
"collections": [
{
"slug": "posts",
"label": "Posts",
"labelSingular": "Post",
"fields": [
{
"slug": "title",
"label": "Title",
"type": "string",
"required": true
},
{ "slug": "excerpt", "label": "Excerpt", "type": "text" },
{ "slug": "content", "label": "Content", "type": "portableText" },
{ "slug": "featured_image", "label": "Featured Image", "type": "image" }
]
}
]
}
Die Seed-Datei-Referenz behandelt Konfliktbehandlung und die anderen Objekte, die ein Seed enthalten kann, einschließlich Einstellungen, Taxonomien, Menüs, Widget-Bereiche, Weiterleitungen und Beispielinhalte.
Ein Modell mit vorhandenen Inhalten ändern
Das Hinzufügen einer Sammlung erstellt einen leeren Platz für neue Einträge. Das Hinzufügen eines optionalen Feldes fügt dieses Feld jedem Eintrag hinzu, aber vorhandene Einträge haben keinen Wert, bis ein Redakteur oder eine Migration einen liefert. Ein Standardwert kann den Anfangswert bereitstellen, wenn das Feld hinzugefügt wird.
Labels, Beschreibungen, Validierungsregeln, Sucheinstellungen und Feldreihenfolge können aktualisiert werden, ohne das Feld zu ersetzen. Sammlungs- und Feld-Slugs sind stabile Bezeichner: Das Admin-Panel legt sie bei der Erstellung fest und bietet später keine Umbenennung an.
Lesen Sie Schema einer bereitgestellten Website weiterentwickeln, bevor Sie ein in der Produktion verwendetes Modell ändern.
TypeScript-Deklarationen
EmDash kann TypeScript-Deklarationen aus dem Modell in der Datenbank generieren. Die Deklarationen fügen Ihre Sammlungsnamen und Feldformen den öffentlichen Abfragefunktionen hinzu, sodass eine Abfrage nach posts Einträge zurückgibt, deren data.title, data.content und andere Felder TypeScript bekannt sind.
Während der lokalen Entwicklung schreibt die Astro-Integration emdash-env.d.ts und aktualisiert sie nach Schemaänderungen. Die Datei ist generierte Ausgabe; bearbeiten Sie das Inhaltsmodell anstelle der Deklaration. Remote-Workflows können emdash types ausführen, um .emdash/types.ts von der ausgewählten EmDash-Website zu schreiben. Regenerieren Sie diese Datei nach Änderung des Modells, das sie repräsentiert.
Generierte Typen helfen dem Code, das aktuelle Schema zu entsprechen, aber sie migrieren keine gespeicherten Inhalte. Eine Modelländerung und jede erforderliche Inhaltsmigration bleiben separate Operationen.
Verwandte Konzepte
Lesen Sie Sammlungen und Felder für Sammlungsfunktionen und Feldauswahl. Lesen Sie Admin-Panel für das Editor- und Berechtigungsmodell.