База данных (Database)
Database — важный компонент источников данных типа базы данных (DataSource). Каждый источник данных типа базы данных имеет соответствующий экземпляр Database, доступный чере з dataSource.db. Экземпляр базы данных основного источника данных также предоставляет удобный псевдоним app.db. Знакомство с общими методами db имеет основополагающее значение для написания серверных плагинов.
Компоненты базы данных
Типичный Database состоит из следующих частей:
- Collections: определяет структуру таблицы данных.
- Model: соответствует моделям ORM (обычно управляемым Sequelize).
- Repository: уровень репозитория, который инкапсулирует логику доступа к данным и обеспечивает методы работы более высокого уровня.
- FieldType: типы полей.
- FilterOperator: операторы, используемые для фильтрации.
- Event: события жизненного цикла и события базы данных.
Этапы использования в плагинах
Что подходит для этапа перед загрузкой beforeLoad
На этом этапе операции с базой данных запрещены. Он подходит для статической регистрации классов и подписки на события.
db.registerFieldTypes()— регистрация пользовательских типов полей.db.registerModels()— Регистрация пользовательских классов моделей.db.registerRepositories()— Регистрация пользовательских классов репозитория.db.registerOperators()— Регистрация операторов пользовательских фильтров.db.on()— Прослушивание событий, связанных с базой данных.
Что подходит для этапа загрузки load
На этом этапе уже загружены все определения классов и события, поэтому при загрузке таблиц данных не будет отсутствующих зависимостей.
db.defineCollection()— Определить новые таблицы данных.db.extendCollection()— Расширить существующие конфигурации таблиц данных.
Для определения встроенных таблиц плагина рекомендуется размещать их в каталоге ./src/server/collections. См. Коллекции.
Операции с данными
Database предоставляет два основных способа доступа к данным и работы с ними:
Операции через репозиторий
Уровень репозитория обычно используется для инкапсуляции бизнес-логики, такой как разбиение на страницы, фильтрация, проверки разрешений и т. д.
Операции через модель
Уровень модели напрямую соответствует объектам ORM и подходит для операций с базой данных нижнего уровня.

