Эта документация была автоматически переведена ИИ.
Сервер NocoBase генерирует соответствующие события на различных этапах: в течение жизненного цикла приложения, жизненного цикла плагинов и при выполнении операций с базой данных. Разработчики плагинов могут прослушивать эти события для реализации расширенной логики, автоматизации или пользовательского поведения.
Система событий NocoBase делится на два основных уровня:
app.on() — События уровня приложения: Позволяют прослушивать события жизненного цикла приложения, такие как запуск, установка, включение плагинов и т.д.db.on() — События уровня базы данных: Позволяют прослушивать события операций на уровне модели данных, например, создание, обновление или удаление записей.Оба уровня наследуют функциональность от EventEmitter Node.js и поддерживают стандартные интерфейсы .on(), .off() и .emit(). NocoBase также расширяет эту поддержку, добавляя emitAsync для асинхронного запуска событий и ожидания завершения выполнения всех прослушивателей.
Прослушиватели событий, как правило, следует регистрировать в методе beforeLoad() плагина. Это гарантирует, что события будут готовы на этапе загрузки плагина, и последующая логика сможет корректно на них реагировать.
app.on()События приложения используются для отслеживания изменений в жизненном цикле приложения NocoBase и его плагинов. Они идеально подходят для реализации логики инициализации, регистрации ресурсов или проверки зависимостей плагинов.
| Название события | Момент срабатывания | Типичное использование |
|---|---|---|
beforeLoad / afterLoad | До / после загрузки приложения | Регистрация ресурсов, инициализация конфигурации |
beforeStart / afterStart | До / после запуска сервиса | Запуск задач, вывод логов запуска |
beforeInstall / afterInstall | До / после установки приложения | Инициализация данных, импорт шаблонов |
beforeStop / afterStop | До / после остановки сервиса | Очистка ресурсов, сохранение состояния |
beforeDestroy / afterDestroy | До / после уничтожения приложения | Удаление кеша, разрыв соединений |
beforeLoadPlugin / afterLoadPlugin | До / после загрузки плагина | Изменение конфигурации плагина или расширение функциональности |
beforeEnablePlugin / afterEnablePlugin | До / после включения плагина | Проверка зависимостей, инициализация логики плагина |
beforeDisablePlugin / afterDisablePlugin | До / после отключения плагина | Очистка ресурсов плагина |
afterUpgrade | После завершения обновления приложения | Выполнение миграции данных или исправление совместимости |
Пример: Прослушивание события запуска приложения
Пример: Прослушивание события загрузки плагина
db.on()События базы данных позволяют отслеживать различные изменения данных на уровне модели. Они подходят для таких операций, как аудит, синхронизация или автоматическое заполнение.
| Название события | Момент срабатывания |
|---|---|
beforeSync / afterSync | До / после синхронизации структуры базы данных |
beforeValidate / afterValidate | До / после валидации данных |
beforeCreate / afterCreate | До / после создания записи |
beforeUpdate / afterUpdate | До / после обновления записи |
beforeSave / afterSave | До / после сохранения (включая создание и обновление) |
beforeDestroy / afterDestroy | До / после удаления записи |
afterCreateWithAssociations / afterUpdateWithAssociations / afterSaveWithAssociations | После операций, включающих связанные данные |
beforeDefineCollection / afterDefineCollection | До / после определения коллекции |
beforeRemoveCollection / afterRemoveCollection | До / после удаления коллекции |
Пример: Прослушивание события после создания данных
Пример: Прослушивание события перед обновлением данных