База данных (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 предоставляет два основных способа доступа к данным и работы с ними:
Операции через репозиторий
Уровень репозитория обычно используется для инкапсуляции бизнес-логики, такой как разбиение на страницы, фильтрация, проверки разрешений и т. д.

