Эта документация была автоматически переведена ИИ.
Database
Database — это важная часть источников данных (DataSource) типа "база данных". Каждый источник данных типа "база данных" имеет соответствующий экземпляр Database, доступ к которому можно получить через dataSource.db. Экземпляр базы данных основного источника данных также предоставляет удобный псевдоним app.db. Знакомство с общими методами db является основой для написания серверных плагинов.
Компоненты Database
Типичный Database состоит из следующих частей:
- Коллекция: Определяет структуру таблиц данных.
- 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 предоставляет два основных способа доступа и работы с данными:
Операции через Repository
Уровень Repository обычно используется для инкапсуляции бизнес-логики, такой как пагинация, фильтрация, проверка разрешений и т.д.
Операции через Model
Уровень Model напрямую соответствует сущностям ORM и подходит для выполнения низкоуровневых операций с базой данных.

