Skip to main content
As relações conectam dois objetos entre si. No Twenty, as relações são sempre bidirecionais — cada relação tem dois lados, e cada lado é declarado como um campo que faz referência ao outro.

Como as relações funcionam

Toda relação requer dois campos que façam referência um ao outro:
  1. O lado MANY_TO_ONE — fica no objeto que contém a chave estrangeira.
  2. O lado ONE_TO_MANY — fica no objeto que possui a coleção.
Ambos os campos usam FieldType.RELATION e fazem referência cruzada um ao outro via relationTargetFieldMetadataUniversalIdentifier.

Exemplo: Um cartão postal tem muitos destinatários

Um PostCard pode ser enviado para muitos registros PostCardRecipient. Cada destinatário pertence a exatamente um cartão postal. Etapa 1: Defina o lado ONE_TO_MANY em PostCard (o lado “um”):
src/fields/post-card-recipients-on-post-card.field.ts
Etapa 2: Defina o lado MANY_TO_ONE em PostCardRecipient (o lado “muitos” — contém a chave estrangeira):
src/fields/post-card-on-post-card-recipient.field.ts
Importações circulares: ambos os campos de relação fazem referência ao universalIdentifier um do outro. Para evitar problemas de importação circular, exporte os IDs dos seus campos como constantes nomeadas de cada arquivo e importe-os no outro. O sistema de build resolve isso em tempo de compilação.

Relacionando a objetos padrão

Para criar uma relação com um objeto integrado do Twenty (Person, Company, etc.), use STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS:
src/fields/person-on-self-hosting-user.field.ts

Propriedades de campos de relação

Campos de relação inline

Você também pode declarar uma relação diretamente dentro de defineObject. Quando estiver inline, omita objectUniversalIdentifier — ele é herdado do objeto pai: