In diesem Abschnitt
Objekte
defineObject – deklarieren Sie neue Datensatztypen mit eigenen Feldern.Objekte erweitern
defineField – fügen Sie Standardobjekten oder Objekten anderer Apps Felder hinzu.Beziehungen
Bidirektionale
MANY_TO_ONE- / ONE_TO_MANY-Verbindungen zwischen Objekten.Entitäten im Überblick
| Entität | Zweck | Definiert mit |
|---|---|---|
| Objekt | Ein neuer benutzerdefinierter Datensatztyp (z. B. PostCard, Invoice) mit eigenen Feldern | defineObject() |
| Feld | Eine Spalte in einem Objekt. Eigenständige Felder können Objekte erweitern, die Sie nicht erstellt haben (z. B. loyaltyTier zu Company hinzufügen) | defineField() |
| Beziehung | Eine bidirektionale Verknüpfung zwischen zwei Objekten – beide Seiten werden als Felder deklariert | defineField() mit FieldType.RELATION |
| Indizes | Ein Datenbankindex, um eine wiederkehrende Abfrage für eines Ihrer Objekte zu beschleunigen | defineIndex() |
src/objects/, src/fields/ und src/indexes/. Stabile universalIdentifier-UUIDs verknüpfen alles über Deploys hinweg.
Indizes (optional)
Apps können Indizes gemeinsam mit ihren Objekten ausliefern, um wiederkehrende Abfragen schnell zu halten. Der häufigste Fall ist eine Status- oder Fremdschlüsselspalte, die Sie häufig lesen.src/indexes/post-card-status.index.ts
Eindeutige Indizes
defineIndex akzeptiert isUnique: true sowohl für Einspalten- als auch Mehrspalteneindeutigkeit. Dies ist das empfohlene Primitive – defineField({ isUnique: true }) ist veraltet und wird in einer zukünftigen Version entfernt.
Andere Einschränkungen
- Partielle
WHERE-Klauseln bleiben unter Kontrolle der Administratoren – Apps können sie nicht deklarieren. - Jedes Objekt ist auf 10 benutzerdefinierte Indizes begrenzt (die Indizes des Frameworks selbst werden nicht mitgezählt).
fields-Array so an, wie Postgres es verwenden soll – die ganz linke Spalte zuerst, wie in einem Telefonbuch. Indizes sind nicht kostenlos: Jeder Schreibvorgang in die Tabelle aktualisiert sie. Fügen Sie einen nur dann hinzu, wenn Sie eine Abfrage haben, die ihn benötigt.
Suchen Sie nach Application Config oder Roles & Permissions? Diese beschreiben die App selbst und nicht die Daten, die sie hinzufügt – sie befinden sich unter Config. Suchen Sie nach Connections (Linear, GitHub, Slack OAuth)? Diese existieren, um von Logikfunktionen aufgerufen zu werden, und befinden sich unter Logic.