id, createdAt, updatedAt, deletedAt, createdBy, updatedBy, position, searchVector
Protože tato pole nedefinujete pomocí defineField(), neexistuje žádná konstanta universalIdentifier, kterou byste mohli importovat. Jak tedy odkážete na createdAt jako na sloupec ve zobrazení?
Problém
Od Twenty 2.19 je univerzální identifikátor systémového pole deterministicky odvozován serverem ze tří vstupů: univerzálního identifikátoru aplikace, univerzálního identifikátoru objektu a názvu pole. Vymyslet si id a natvrdo ho zapsat nebude fungovat: neshoduje se s ničím na serveru a synchronizace zamítne osiřelý odkaz:Řešení
getFieldUniversalIdentifier je k dispozici od twenty-sdk verze 2.21 a vyšší.getFieldUniversalIdentifier k odvození přesně stejné hodnoty, jakou používá server. Funkce přijímá tři vstupy a vrací univerzální identifikátor pole:
applicationUniversalIdentifierje identifikátor vaší aplikace, ten, který předáváte dodefineApplication().objectUniversalIdentifierje identifikátor objektu, ke kterému pole patří.nameje název systémového pole, jedna z výše uvedených hodnot.
Příklad: sloupec createdAt v zobrazení
Typickým případem je přidání sloupcecreatedAt do zobrazení některého z vašich vlastních objektů. Odvoďte identifikátor pole a odkažte na něj stejně jako na jakýkoli jiný fieldMetadataUniversalIdentifier:
src/views/example-view.ts
fieldMetadataUniversalIdentifier: pole zobrazení, filtry, řazení, seskupování a widgety rozložení stránky.
Identifikátor odvozujte, neukládejte ho natvrdo. Protože server odvozuje hodnotu z
ID aplikace, ID objektu a názvu pole, volání
getFieldUniversalIdentifier udržuje odkaz správný i v případě, že se tyto
vstupy změní, a předchází odchylkám, pokud se samotný způsob odvozování někdy změní.Standardní objekty Twenty
U standardního objektu Twenty (Person, Company, Opportunity, …) nemusíte nic odvozovat: identifikátory systémových polí jsou předpočítané konstanty, které můžete přímo importovat.getFieldUniversalIdentifier v případě, kdy je objekt definován vaší aplikací pomocí defineObject() a žádná taková konstanta neexistuje.
name je výchozí pole, nikoli systémové pole. Má svůj vlastní natvrdo daný
univerzální identifikátor a neodvozuje se pomocí
getFieldUniversalIdentifier. U objektů, které definujete, odkazujte na pole
name pomocí identifikátoru, který jste mu dali v defineObject().