Эта документация была автоматически переведена ИИ.
Миграции
В процессе разработки и обновления плагинов NocoBase структуры базы данных или конфигурации плагинов могут изменяться несовместимым образом. Для обеспечения плавного выполнения обновлений NocoBase предлагает механизм миграций, который позволяет обрабатывать эти изменения, создавая файлы миграции. Это руководство поможет вам систематически изучить использование миграций и процесс их разработки.
Концепция миграций
Миграция — это скрипт, который автоматически выполняется при обновлении плагина и предназначен для решения следующих задач:
- Корректировка структуры таблиц данных (добавление полей, изменение типов полей и т. д.)
- Миграция данных (например, массовое обновление значений полей)
- Обновление конфигурации плагина или внутренней логики
Время выполнения миграций делится на три типа:
Создание файлов миграции
Файлы миграции должны располагаться в каталоге плагина по пути src/server/migrations/*.ts. NocoBase предоставляет команду create-migration для быстрого создания файлов миграции.
Опциональные параметры
Пример
Путь к сгенерированному файлу миграции:
Начальное содержимое файла:
⚠️
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для четкого указания версии, к которой применяется миграция, чтобы предотвратить повторное выполнение. - Покрытие тестами
Проверьте миграцию на Mock Server перед выполнением обновления в реальной среде.

