Эта документация была автоматически переведена ИИ.
В процессе разработки и обновления плагинов NocoBase структуры базы данных или конфигурации плагинов могут изменяться несовместимым образом. Для обеспечения плавного выполнения обновлений NocoBase предлагает механизм миграций, который позволяет обрабатывать эти изменения, создавая файлы миграции. Это руководство поможет вам систематически изучить использование миграций и процесс их разработки.
Миграция — это скрипт, который автоматически выполняется при обновлении плагина и предназначен для решения следующих задач:
Время выполнения миграций делится на три типа:
| Тип | Время срабатывания | Сценарий выполнения |
|---|---|---|
beforeLoad | Перед загрузкой всех конфигураций плагинов | |
afterSync | После синхронизации конфигураций коллекций с базой данных (структура коллекции уже изменена) | |
afterLoad | После загрузки всех конфигураций плагинов |
Файлы миграции должны располагаться в каталоге плагина по пути src/server/migrations/*.ts. NocoBase предоставляет команду create-migration для быстрого создания файлов миграции.
Опциональные параметры
| Параметр | Описание |
|---|---|
--pkg <pkg> | Укажите имя пакета плагина |
--on [on] | Укажите время выполнения, варианты: beforeLoad, afterSync, afterLoad |
Пример
Путь к сгенерированному файлу миграции:
Начальное содержимое файла:
⚠️
appVersionиспользуется для определения версии, к которой применяется обновление. Миграция будет выполнена в средах с версиями, меньшими указанной.
В файлах миграции вы можете получить доступ к следующим общим свойствам и API через this для удобной работы с базой данных, плагинами и экземплярами приложения:
Общие свойства
this.app
Текущий экземпляр приложения NocoBase. Может использоваться для доступа к глобальным сервисам, плагинам или конфигурации.
this.db
Экземпляр сервиса базы данных, предоставляет интерфейсы для работы с моделями (коллекциями).
this.plugin
Текущий экземпляр плагина, может использоваться для доступа к пользовательским методам плагина.
this.sequelize
Экземпляр Sequelize, может напрямую выполнять необработанные SQL-запросы или транзакционные операции.
this.queryInterface
QueryInterface Sequelize, часто используется для изменения структуры таблиц, например, для добавления полей, удаления таблиц и т. д.
Пример написания миграции
Помимо перечисленных выше общих свойств, миграции также предоставляют богатый набор API. Подробную документацию см. в API миграций.
Выполнение миграций запускается командой nocobase upgrade:
При обновлении система определяет порядок выполнения на основе типа миграции и appVersion.
При разработке плагинов рекомендуется использовать Mock Server для проверки корректности выполнения миграций, чтобы избежать повреждения реальных данных.
Совет: Использование Mock Server позволяет быстро имитировать сценарии обновления и проверять порядок выполнения миграций, а также изменения данных.
beforeLoad, afterSync или afterLoad в зависимости от объектов операции, чтобы избежать зависимости от незагруженных модулей.appVersion для четкого указания версии, к которой применяется миграция, чтобы предотвратить повторное выполнение.