Skip to main content
Özel nesneler, uygulamanızın bir çalışma alanına eklediği yeni kayıt türleridir — Kartpostal, Fatura, Abonelik, alanınıza özgü herhangi bir şey. Her nesne kendi şemasını (alanlar, ilişkiler, varsayılan değerler) ve eşitlemeler ve dağıtımlar boyunca korunan, kararlı bir evrensel tanımlayıcıyı bildirir.
src/objects/post-card.object.ts

Önemli noktalar

  • universalIdentifier dağıtımlar arasında benzersiz ve kararlı olmalıdır.
  • Her alan bir name, type, label ve kendi kararlı universalIdentifier değerini gerektirir.
  • fields dizisi isteğe bağlıdır — özel alanlar olmadan da nesneler tanımlayabilirsiniz.
  • openRecordIn, bu nesnenin kayıtlarının tıklandığında nerede açılacağını ayarlar: ObjectOpenRecordIn.USER_CHOICE (varsayılan; her çalışma alanı üyesinin Ayarlar → Deneyim bölümündeki kendi tercihine uyar), ObjectOpenRecordIn.SIDE_PANEL veya ObjectOpenRecordIn.RECORD_PAGE. Kayıtların kullanılabilir olması için tam sayfa gerektirdiği durumlarda, iş akışları ve panolarda olduğu gibi RECORD_PAGE üzerinde sabitleyin; yalnızca hızlı bir panel olarak anlam ifade eden kayıtlar için ise, takvim etkinliklerinde olduğu gibi SIDE_PANEL üzerinde sabitleyin.
  • Burada tanımlanan satır içi alanların bir objectUniversalIdentifier’a ihtiyacı yoktur — üst nesneden devralınır. Sahibi olmadığınız nesnelere alan eklemek için defineField() kullanın.
  • yarn twenty dev:add object kullanarak, adlandırma, alanlar ve ilişkiler konusunda sizi yönlendirerek yeni nesneler oluşturabilirsiniz. Mimari → Varlık iskeleti oluşturma bölümüne bakın.
Temel alanlar otomatik olarak eklenir. Özel bir nesne tanımladığınızda Twenty, sizin için id, name, createdAt, updatedAt, createdBy, updatedBy ve deletedAt gibi standart alanlar oluşturur. Bunları fields dizinizde bildirmenize gerek yok — yalnızca özel alanlarınızı ekleyin. Aynı ada sahip bir alan bildirerek varsayılan bir alanı geçersiz kılabilirsiniz, ancak bu nadiren iyi bir fikirdir.

Alan tipleri

twenty-sdk/define içinden dışa aktarılan, FieldType değerlerinin tam kümesi: Bileşik tipler birden çok alt alan depolar (ör. FULL_NAME = ad + soyad; CURRENCY = amountMicros + currencyCode). SELECT ve MULTI_SELECT, yukarıdaki örnekte olduğu gibi bir options dizisi gerektirir.

Varsayılan değerler

Sabit (literal) dize varsayılanları, dize içinde tek tırnak içine alınmış olmalıdır — defaultValue: "'Draft'", defaultValue: "Draft" değil. Bu nedenle yukarıdaki status alanı `'${PostCardStatus.DRAFT}'` kullanır. Tırnak içine alınmamış dizeler, bir kayıt oluşturulduğunda değerlendirilen, hesaplanmış varsayılanlar için ayrılmıştır:
  • 'uuid' — bir UUID üretir (UUID alanları için)
  • 'now' — geçerli zaman damgası (DATE_TIME alanları için)
Aynı kural, bileşik varsayılanların string alt alanları için (örneğin bir ACTOR alanında { source: "'MANUAL'" }) ve SELECT/MULTI_SELECT değerleri için de geçerlidir. Tırnak içine alınmamış bir sabit string varsayılan, uygulamanız oluşturulurken bir uyarıya neden olur.

Boş değer atanabilirliği

isNullable, bir alanın NULL kabul edip etmediğini kontrol eder. Varsayılan değeri true’dur — isteğe bağlı alanlar için bunu belirtmeyin. Bir alanı veritabanı düzeyinde zorunlu yapmak için isNullable: false olarak ayarlayın. isNullable değişiklikleri, mevcut bir alanı güncelleyenler de dahil olmak üzere her senkronizasyonda uygulanır — bu nedenle manifesti düzenleyip yeniden senkronize ederek bir alanın boş değer atanabilirliğini değiştirebilirsiniz.
Var olan bir alanı boş değer kabul etmeyecek (non-nullable) hale getirmek için bir varsayılan değer gereklidir. Bir alanı isNullable: false olarak değiştirdiğinizde, ayrıca boş olmayan (non-null) bir defaultValue sağlamanız gerekir. Varsayılan değer, NOT NULL kısıtlaması uygulanmadan önce mevcut NULL satırlarını doldurur; bu olmadan senkronizasyon, Default value cannot be null for non-nullable fields hatasıyla başarısız olur. İlişki alanları (relation fields) ve TS_VECTOR alanları her zaman boş değere izin verir (nullable), bu yüzden isNullable bunlar üzerinde hiçbir etkiye sahip değildir.

Sırada ne var

  • Bu nesneyi diğerlerine bağlayın — çift yönlü ilişki modeli için İlişkiler bölümüne bakın.
  • Diğer uygulamalardaki nesnelere alanlar ekleyindefineField() için Nesneleri Genişletme bölümüne bakın.
  • Bu nesneyi arayüzde görüntüle — kenar çubuğuna bir menü öğesi eklemek için Gezinme Menüsü Öğeleri bölümüne bakın; özel liste yapılandırmaları eklemek için Görünümler bölümüne bakın.