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

