src/objects/post-card.object.ts
Hauptpunkte
- Der
universalIdentifiermuss eindeutig und über Deployments hinweg stabil sein. - Jedes Feld benötigt
name,type,labelund einen eigenen stabilenuniversalIdentifier. - Das Array
fieldsist optional — Sie können Objekte ohne benutzerdefinierte Felder definieren. openRecordInlegt fest, wo Datensätze dieses Objekts beim Klicken geöffnet werden:ObjectOpenRecordIn.USER_CHOICE(die Standardeinstellung, gemäß der individuellen Präferenz jedes Workspace-Mitglieds in Settings → Experience),ObjectOpenRecordIn.SIDE_PANELoderObjectOpenRecordIn.RECORD_PAGE. Heften Sie es anRECORD_PAGEfür Datensätze, die für die Nutzung eine ganze Seite benötigen – wie Workflows und Dashboards –, oder anSIDE_PANELfür Datensätze, die nur als schnelles Panel sinnvoll sind, wie Kalendereinträge.- Inline definierte Felder benötigen kein
objectUniversalIdentifier– er wird vom übergeordneten Objekt geerbt. Verwenden SiedefineField(), um Objekten Felder hinzuzufügen, die Ihnen nicht gehören. - Sie können mit
yarn twenty dev:add objectneue Objekte erzeugen; der Assistent führt Sie durch Benennung, Felder und Beziehungen. Siehe Architektur → Gerüste für Entitäten.
Basisfelder werden automatisch hinzugefügt. Wenn Sie ein benutzerdefiniertes Objekt definieren, erstellt Twenty Standardfelder wie
id, name, createdAt, updatedAt, createdBy, updatedBy und deletedAt für Sie. Sie müssen diese nicht in Ihrem fields-Array deklarieren – nur Ihre benutzerdefinierten Felder. Sie können ein Standardfeld überschreiben, indem Sie eines mit demselben Namen deklarieren, aber das ist nur selten eine gute Idee.Feldtypen
Die vollständige Menge vonFieldType-Werten, exportiert aus twenty-sdk/define:
Zusammengesetzte Typen speichern mehrere Unterfelder (z. B.
FULL_NAME = Vorname + Nachname; CURRENCY = amountMicros + currencyCode). SELECT und MULTI_SELECT erfordern ein options-Array wie im obigen Beispiel.
Standardwerte
Wörtliche Zeichenfolgen-Standardwerte müssen in einfache Anführungszeichen innerhalb der Zeichenfolge eingeschlossen werden —defaultValue: "'Draft'", nicht defaultValue: "Draft". Deshalb verwendet das status-Feld oben `'${PostCardStatus.DRAFT}'`.
Nicht in Anführungszeichen gesetzte Zeichenfolgen sind für berechnete Standardwerte reserviert, die ausgewertet werden, wenn ein Datensatz erstellt wird:
'uuid'— generiert eine UUID (fürUUID-Felder)'now'— der aktuelle Zeitstempel (fürDATE_TIME-Felder)
{ source: "'MANUAL'" } in einem ACTOR-Feld) und für SELECT-/MULTI_SELECT-Werte. Ein wörtlicher Zeichenfolgen-Standardwert, der nicht in Anführungszeichen gesetzt ist, löst beim Build deiner App eine Warnung aus.
Nullbarkeit
isNullable steuert, ob ein Feld NULL akzeptiert. Standardmäßig ist es true – lasse es für optionale Felder weg. Setze isNullable: false, um ein Feld auf Datenbankebene erforderlich zu machen.
Änderungen an isNullable werden bei jedem Sync angewendet, einschließlich Syncs, die ein vorhandenes Feld aktualisieren – so kannst du die Nullbarkeit eines Feldes ändern, indem du das Manifest bearbeitest und erneut synchronisierst.
Das Ändern eines vorhandenen Feldes in nicht nullbar erfordert einen Standardwert. Wenn du ein Feld auf
isNullable: false änderst, musst du auch einen defaultValue angeben, der nicht NULL ist. Der Standardwert füllt alle vorhandenen NULL-Zeilen auf, bevor die NOT NULL-Einschränkung angewendet wird; ohne ihn schlägt die Synchronisierung mit Default value cannot be null for non-nullable fields fehl. Relationsfelder und TS_VECTOR-Felder sind immer nullbar, daher hat isNullable keine Auswirkung auf sie.Was kommt als Nächstes
- Verbinden Sie dieses Objekt mit anderen – siehe Relationen für das bidirektionale Relationsmuster.
- Fügen Sie Objekten aus anderen Apps Felder hinzu – siehe Objekte erweitern für
defineField(). - Dieses Objekt in der UI anzeigen — siehe Navigationsmenüeinträge, um einen Eintrag in der Seitenleiste hinzuzufügen; siehe Ansichten, um benutzerdefinierte Listenkonfigurationen hinzuzufügen.