Přejít na hlavní obsah
Vlastní objekty jsou nové typy záznamů, které vaše aplikace přidává do pracovního prostoru — pohlednice, faktura, předplatné, cokoli specifického pro vaši doménu. Každý objekt definuje své schéma (pole, vztahy, výchozí hodnoty) a stabilní univerzální identifikátor, který přetrvá mezi synchronizacemi a nasazeními.
src/objects/post-card.object.ts

Hlavní body

  • Hodnota universalIdentifier musí být jedinečná a stabilní napříč nasazeními.
  • Každé pole vyžaduje name, type, label a svůj vlastní stabilní universalIdentifier.
  • Pole fields je volitelné — objekty můžete definovat i bez vlastních polí.
  • Pole definovaná zde inline nepotřebují objectUniversalIdentifier — dědí se z nadřazeného objektu. Pomocí defineField() můžete přidávat pole k objektům, které nevlastníte.
  • Nové objekty můžete vygenerovat pomocí yarn twenty dev:add object, který vás provede pojmenováním, poli a vztahy. Viz Architektura → Scaffolding entit.
Základní pole jsou přidána automaticky. Když definujete vlastní objekt, Twenty pro vás vytvoří standardní pole jako id, name, createdAt, updatedAt, createdBy, updatedBy a deletedAt. Nemusíte je uvádět v poli fields — pouze svá vlastní pole. Výchozí pole můžete přepsat tak, že deklarujete pole se stejným názvem, ale jen zřídka je to dobrý nápad.

Typy polí

Úplná sada hodnot FieldType, exportovaných z twenty-sdk/define: Složené typy ukládají více podpolí (např. FULL_NAME = křestní jméno + příjmení; CURRENCY = amountMicros + currencyCode). SELECT a MULTI_SELECT vyžadují pole options, jak je ukázáno v příkladu výše.

Výchozí hodnoty

Výchozí textové hodnoty musí být uzavřené v jednoduchých uvozovkách uvnitř řetězce — defaultValue: "'Draft'", ne defaultValue: "Draft". Proto pole status výše používá `'${PostCardStatus.DRAFT}'`. Neuzavřené (necitované) řetězce jsou vyhrazené pro vypočítané výchozí hodnoty, které se vyhodnocují při vytvoření záznamu:
  • 'uuid' — generuje UUID (pro pole UUID)
  • 'now' — aktuální časové razítko (pro pole DATE_TIME)
Stejná konvence platí pro řetězcová podpola složených výchozích hodnot (např. { source: "'MANUAL'" } u pole ACTOR) a pro hodnoty SELECT/MULTI_SELECT. Doslovná řetězcová výchozí hodnota ponechaná bez uvozovek vyvolá při sestavení aplikace varování.

Možnost hodnoty NULL

isNullable určuje, zda pole přijímá NULL. Výchozí hodnota je true — pro volitelná pole ji můžete vynechat. Nastavte isNullable: false, aby bylo pole vyžadováno na úrovni databáze. Změny isNullable se použijí při každé synchronizaci, včetně těch, které aktualizují existující pole — takže můžete změnit, zda pole přijímá hodnotu NULL, úpravou manifestu a opětovnou synchronizací.
Změna existujícího pole tak, aby neumožňovalo hodnotu NULL, vyžaduje výchozí hodnotu. Když změníte pole na isNullable: false, musíte také zadat nenulovou hodnotu defaultValue. Výchozí hodnota doplní všechny existující řádky s hodnotou NULL ještě předtím, než se uplatní omezení NOT NULL; bez ní synchronizace selže s chybou Default value cannot be null for non-nullable fields. Relační pole a pole typu TS_VECTOR vždy umožňují hodnotu NULL, takže na ně isNullable nemá žádný efekt.

Co dál

  • Propojte tento objekt s ostatními — vzor obousměrných vztahů najdete v části Relations.
  • Přidávejte pole k objektům z jiných aplikací — viz Extending Objects pro defineField().
  • Zobrazte tento objekt v uživatelském rozhraní — viz Views a Navigation Menu Items pro umístění do postranního panelu.