Ana içeriğe atla
Twenty içindeki her nesne, kendiniz asla tanımlamadığınız bir dizi sistem alanı ile birlikte gelir. Bunlar, nesne sağlandığında sunucu tarafından otomatik olarak oluşturulur: 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.
Sunucunun kullandığıyla tamamen aynı değeri elde etmek için 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 bir createdAt sütunu eklemektir. Alan id’sini çözümleyin ve ona, herhangi bir fieldMetadataUniversalIdentifier gibi referans verin:
src/views/example-view.ts
Aynı çözümlenen id, bir 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.