src/objects/post-card.object.ts
Puncte cheie
universalIdentifiertrebuie să fie unic și stabil între implementări.- Fiecare câmp necesită un
name, untype, unlabelși propriuluniversalIdentifierstabil. - Tabloul
fieldseste opțional — puteți defini obiecte fără câmpuri personalizate. openRecordInstabilește unde se deschid înregistrările acestui obiect când se face clic pe ele:ObjectOpenRecordIn.USER_CHOICE(valoarea implicită, care respectă preferința fiecărui membru al spațiului de lucru din Settings → Experience),ObjectOpenRecordIn.SIDE_PANELsauObjectOpenRecordIn.RECORD_PAGE. Fixează-l laRECORD_PAGEpentru înregistrările care au nevoie de o pagină completă pentru a fi utilizabile, așa cum este cazul fluxurilor de lucru și al dashboard-urilor, sau laSIDE_PANELpentru înregistrările care au sens doar ca un panou rapid, așa cum este cazul evenimentelor din calendar.writabilitycontrolează cine poate scrie înregistrări ale obiectului, înainte ca permisiunile pe roluri să se aplice:MetadataWritability.OPEN(valoarea implicită — rolurile din spațiul de lucru decid),MetadataWritability.APPLICATION(numai funcțiile de logică ale aplicației tale pot crea, actualiza sau șterge înregistrări; folosește acest lucru pentru obiecte de tip configurație ale căror înregistrări determină comportamentul, astfel încât membrii spațiului de lucru cu acces extins la înregistrări să nu le poată edita prin API) sauMetadataWritability.SYSTEM(rezervat pentru date administrate de platformă). Operațiunile de citire nu sunt afectate — acest lucru este impus la nivel de server, spre deosebire deisUIEditable, care doar ascunde elementele din interfața cu utilizatorul. Se aplică și la nivel de câmp, unde poate fi doar mai restrictivă decât la nivelul obiectului.- Câmpurile inline definite aici nu au nevoie de
objectUniversalIdentifier— este moștenit de la obiectul părinte. FolosițidefineField()pentru a adăuga câmpuri la obiecte care nu vă aparțin. - Puteți genera obiecte noi cu
yarn twenty dev:add object, care vă ghidează prin denumire, câmpuri și relații. Consultați Arhitectură → Generarea entităților.
Câmpurile de bază sunt adăugate automat. Când definiți un obiect personalizat, Twenty creează pentru dvs. câmpuri standard precum
id, name, createdAt, updatedAt, createdBy, updatedBy și deletedAt. Nu trebuie să le declarați în tabloul fields — doar câmpurile dvs. personalizate. Puteți suprascrie un câmp implicit declarând unul cu același nume, dar acest lucru este rareori o idee bună.Tipuri de câmpuri
Setul complet de valoriFieldType, exportate din twenty-sdk/define:
Tipurile compuse stochează mai multe sub‑câmpuri (de ex.
FULL_NAME = prenume + nume de familie; CURRENCY = amountMicros + currencyCode). SELECT și MULTI_SELECT necesită un tablou options, ca în exemplul de mai sus.
Valori implicite
Valorile implicite de tip șir literal trebuie să fie încadrate în ghilimele simple în interiorul șirului —defaultValue: "'Draft'", nu defaultValue: "Draft". De aceea câmpul status de mai sus folosește `'${PostCardStatus.DRAFT}'`.
Șirurile fără ghilimele sunt rezervate pentru valorile implicite calculate, evaluate atunci când este creată o înregistrare:
'uuid'— generează un UUID (pentru câmpurileUUID)'now'— marcajul temporal curent (pentru câmpurileDATE_TIME)
{ source: "'MANUAL'" } pe un câmp ACTOR) și valorilor SELECT/MULTI_SELECT. O valoare implicită literală de tip șir de caractere lăsată neîncadrată în ghilimele generează un avertisment atunci când aplicația este construită.
Acceptarea valorii NULL
isNullable controlează dacă un câmp acceptă NULL. Valoarea sa implicită este true — omiteți-l pentru câmpurile opționale. Setați isNullable: false pentru a face un câmp obligatoriu la nivel de bază de date.
Modificările aduse proprietății isNullable sunt aplicate la fiecare sincronizare, inclusiv la sincronizările care actualizează un câmp existent — astfel încât puteți schimba nullabilitatea unui câmp editând manifestul și resincronizând.
Transformarea unui câmp existent în non-nullable necesită o valoare implicită. Atunci când modificați un câmp la
isNullable: false, trebuie să furnizați și un defaultValue nenul. Valoarea implicită completează retroactiv orice rânduri NULL existente înainte ca restricția NOT NULL să fie aplicată; fără aceasta, sincronizarea eșuează cu mesajul Default value cannot be null for non-nullable fields. Câmpurile de relație și câmpurile TS_VECTOR sunt întotdeauna nullable, astfel încât isNullable nu are niciun efect asupra lor.Ce urmează
- Conectați acest obiect la altele — consultați Relații pentru modelul de relație bidirecțională.
- Adăugați câmpuri la obiecte din alte aplicații — consultați Extinderea obiectelor pentru
defineField(). - Afișează acest obiect în interfața de utilizator — consultă Elemente de meniu de navigare pentru a adăuga un element în bara laterală; consultă Vizualizări pentru a adăuga configurații personalizate de listă.