Ця документація була автоматично перекладена штучним інтелектом.
Під час розробки та оновлення плагінів NocoBase, структура бази даних або конфігурація плагіна можуть зазнавати несумісних змін. Щоб забезпечити плавне оновлення, NocoBase пропонує механізм міграцій (Migration), який дозволяє обробляти ці зміни шляхом написання файлів міграцій. Цей посібник допоможе вам системно зрозуміти, як використовувати міграції та який процес їх розробки.
Міграція – це скрипт, який автоматично виконується під час оновлення плагінів і використовується для вирішення таких завдань:
Час виконання міграцій поділяється на три типи:
| Тип | Час спрацьовування | Сценарій виконання |
|---|---|---|
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. Детальну документацію дивіться в Migration API.
Виконання міграції запускається командою nocobase upgrade:
Під час оновлення система визначає порядок виконання на основі типу міграції та appVersion.
Під час розробки плагінів рекомендується використовувати Mock Server для перевірки коректності виконання міграції, щоб уникнути пошкодження реальних даних.
Порада: Використання Mock Server дозволяє швидко симулювати сценарії оновлення та перевіряти порядок виконання міграцій і зміни даних.
beforeLoad, afterSync або afterLoad залежно від об'єктів операції, уникаючи залежності від незавантажених модулів.appVersion для чіткого визначення версії, до якої застосовується міграція, щоб запобігти повторному виконанню.