Как работают отношения
Каждое отношение требует двух полей, которые ссылаются друг на друга:- Сторона MANY_TO_ONE — находится в объекте, который содержит внешний ключ.
- Сторона ONE_TO_MANY — находится в объекте, которому принадлежит коллекция.
FieldType.RELATION и ссылаются друг на друга через relationTargetFieldMetadataUniversalIdentifier.
Пример: Почтовая открытка имеет много получателей
PostCard может быть отправлен множеству записей PostCardRecipient. Каждый получатель относится ровно к одной открытке.
Шаг 1: Определите сторону ONE_TO_MANY на PostCard (сторона “one”):
src/fields/post-card-recipients-on-post-card.field.ts
src/fields/post-card-on-post-card-recipient.field.ts
Циклические импорты: оба поля отношений ссылаются на
universalIdentifier друг друга. Чтобы избежать проблем с циклическими импортами, экспортируйте идентификаторы полей как именованные константы из каждого файла и импортируйте их в другом. Система сборки разрешает это на этапе компиляции.Связывание со стандартными объектами
Чтобы создать отношение со встроенным объектом Twenty (Person, Company и т. д.), используйтеSTANDARD_OBJECT_UNIVERSAL_IDENTIFIERS:
src/fields/person-on-self-hosting-user.field.ts
Свойства поля отношения
Встроенные поля связей
Вы также можете объявить связь напрямую внутриdefineObject. При встроенном объявлении опустите objectUniversalIdentifier — он наследуется от родительского объекта: