id, createdAt, updatedAt, deletedAt, createdBy, updatedBy, position, searchVector
Bu alanları defineField() ile tanımlamadığınız için, içe aktarabileceğiniz bir universalIdentifier sabiti yoktur. Peki bir görünümde createdAt alanına sütun olarak nasıl referans verirsiniz?
Sorun
Twenty 2.19’dan beri, bir sistem alanının evrensel tanımlayıcısı, sunucu tarafından üç girdiden deterministik olarak türetilir: uygulama evrensel tanımlayıcısı, nesne evrensel tanımlayıcısı ve alan adı. Rastgele bir id uydurup onu hardcode etmek işe yaramaz: sunucudaki hiçbir şeyle eşleşmez ve senkronizasyon, askıda kalan referansı reddeder:Çözüm
getFieldUniversalIdentifier, twenty-sdk 2.21 sürümünden itibaren kullanılabilir.getFieldUniversalIdentifier kullanın. Üç girdiyi alır ve alanın evrensel tanımlayıcısını döndürür:
applicationUniversalIdentifier, uygulamanızın tanımlayıcısıdır;defineApplication()çağrısına aktardığınız tanımlayıcı.objectUniversalIdentifier, alanın ait olduğu nesnenin tanımlayıcısıdır.name, sistem alan adıdır; yukarıda listelenen değerlerden biridir.
Örnek: bir görünümde createdAt sütunu
Tipik durum, özel nesnelerinizden birinin görünümüne bircreatedAt sütunu eklemektir. Alan id’sini çözümleyin ve ona, herhangi bir fieldMetadataUniversalIdentifier gibi referans verin:
src/views/example-view.ts
fieldMetadataUniversalIdentifier beklendiği her yerde çalışır: görünüm alanları, filtreler, sıralamalar, gruplar ve sayfa düzeni bileşenleri.
Id’yi çözümleyin, hardcode etmeyin. Sunucu değeri uygulama id’si, nesne id’si ve alan adından
türettiği için,
getFieldUniversalIdentifier çağrısı, bu girdiler değişse bile referansınızı doğru tutar ve türetme zaman içinde gelişirse sapmayı önler.Standart Twenty nesneleri
Standart bir Twenty nesnesi (Person, Company, Opportunity, …) için hiçbir şey türetmeniz gerekmez: sistem alanı tanımlayıcıları, doğrudan içe aktarabileceğiniz önceden hesaplanmış sabitlerdir.defineObject() ile uygulamanızın tanımladığı, böyle bir sabitin olmadığı nesnelerde getFieldUniversalIdentifier yöntemine başvurun.
name, bir sistem alanı değil, bir varsayılan alandır. Kendi hardcode edilmiş
evrensel tanımlayıcısını korur ve
getFieldUniversalIdentifier ile çözülmez. Tanımladığınız nesnelerde, name alanına defineObject() içinde ona verdiğiniz tanımlayıcı ile referans verin.