src/objects/post-card.object.ts
Points clés
- Le
universalIdentifierdoit être unique et stable entre les déploiements. - Chaque champ nécessite un
name, untype, unlabelet son propreuniversalIdentifierstable. - Le tableau
fieldsest facultatif — vous pouvez définir des objets sans champs personnalisés. - Les champs en ligne définis ici n’ont pas besoin d’un
objectUniversalIdentifier— il est hérité de l’objet parent. UtilisezdefineField()pour ajouter des champs aux objets que vous ne possédez pas. - Vous pouvez générer de nouveaux objets avec
yarn twenty dev:add object, qui vous guide à travers le nommage, les champs et les relations. Voir Architecture → Scaffolding entities.
Les champs de base sont ajoutés automatiquement. Lorsque vous définissez un objet personnalisé, Twenty crée pour vous des champs standard comme
id, name, createdAt, updatedAt, createdBy, updatedBy et deletedAt. Vous n’avez pas besoin de les déclarer dans votre tableau fields — uniquement vos champs personnalisés. Vous pouvez remplacer un champ par défaut en en déclarant un avec le même nom, mais c’est rarement une bonne idée.Types de champ
L’ensemble complet des valeurs deFieldType, exportées depuis twenty-sdk/define :
Les types composés stockent plusieurs sous-champs (par exemple
FULL_NAME = prénom + nom de famille ; CURRENCY = amountMicros + currencyCode). SELECT et MULTI_SELECT nécessitent un tableau options comme dans l’exemple ci-dessus.
Valeurs par défaut
Les valeurs par défaut de type chaîne littérale doivent être entourées de guillemets simples à l’intérieur de la chaîne —defaultValue: "'Draft'", et non defaultValue: "Draft". C’est pourquoi le champ status ci-dessus utilise `'${PostCardStatus.DRAFT}'`.
Les chaînes sans guillemets sont réservées aux valeurs par défaut calculées, évaluées lors de la création d’un enregistrement :
'uuid'— génère un UUID (pour les champsUUID)'now'— l’horodatage actuel (pour les champsDATE_TIME)
{ source: "'MANUAL'" } sur un champ ACTOR) ainsi qu’aux valeurs SELECT/MULTI_SELECT. Une valeur par défaut littérale de type chaîne laissée sans guillemets génère un avertissement lors de la compilation de votre application.
Nullabilité
isNullable détermine si un champ accepte NULL. Sa valeur par défaut est true — omettez-le pour les champs facultatifs. Définissez isNullable: false pour rendre un champ obligatoire au niveau de la base de données.
Les modifications de isNullable sont appliquées à chaque synchronisation, y compris celles qui mettent à jour un champ existant — vous pouvez donc modifier la nullabilité d’un champ en éditant le manifeste puis en relançant la synchronisation.
Rendre un champ existant non nullable nécessite une valeur par défaut. Lorsque vous modifiez un champ avec
isNullable: false, vous devez également fournir une defaultValue non nulle. La valeur par défaut remplit rétroactivement toutes les lignes NULL existantes avant que la contrainte NOT NULL ne soit appliquée ; sans cela, la synchronisation échoue avec Default value cannot be null for non-nullable fields. Les champs de relation et les champs TS_VECTOR sont toujours nullables, donc isNullable n’a aucun effet sur eux.Et après
- Connectez cet objet aux autres — voir Relations pour le modèle de relation bidirectionnelle.
- Ajoutez des champs aux objets d’autres applications — voir Extending Objects pour
defineField(). - Affichez cet objet dans l’interface utilisateur — voir Views et Navigation Menu Items pour l’ajouter à la barre latérale.