В этом разделе
Объекты
defineObject — объявляйте новые типы записей с их собственными полями.Расширение объектов
defineField — добавляйте поля к стандартным объектам или объектам других приложений.Связи
Двусторонние связи
MANY_TO_ONE / ONE_TO_MANY между объектами.Сущности вкратце
| Сущность | Назначение | Определяется с помощью |
|---|---|---|
| Объект | Новый пользовательский тип записей (например, PostCard, Invoice) с собственными полями | defineObject() |
| Поле | Столбец в объекте. Отдельные поля могут расширять объекты, которые вы не создавали (например, добавьте loyaltyTier к объекту Company) | defineField() |
| Связь | Двусторонняя связь между двумя объектами — обе стороны объявлены как поля | defineField() с FieldType.RELATION |
| Индекс | Индекс базы данных для ускорения повторяющегося запроса к одному из ваших объектов | defineIndex() |
src/objects/, src/fields/ и src/indexes/. Стабильные UUID universalIdentifier связывают все воедино между развертываниями.
Индексы (необязательно)
Приложения могут поставлять индексы вместе со своими объектами, чтобы повторяющиеся запросы выполнялись быстро. Наиболее распространенный случай — столбец статуса или внешнего ключа, к которому вы часто обращаетесь при чтении.src/indexes/post-card-status.index.ts
Уникальные индексы
defineIndex принимает isUnique: true как для уникальности по одному столбцу, так и по нескольким столбцам. Это рекомендуемый примитив — defineField({ isUnique: true }) устарел и будет удален в одном из будущих релизов.
Другие ограничения
- Частичные предложения
WHEREостаются под контролем администратора — приложения не могут объявлять их. - Для каждого объекта допускается не более 10 пользовательских индексов (индексы самого фреймворка не учитываются).
fields в том порядке, в котором Postgres должен его использовать — сначала самый левый столбец, как в телефонной книге. Индексы не бесплатны: при каждой записи в таблицу они обновляются. Добавляйте индекс только тогда, когда у вас есть запрос, которому он действительно нужен.