logologo
Початок
Посібник
Розробка
Плагіни
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Початок
Посібник
Розробка
Плагіни
API
logologo

Швидкий старт

Огляд розробки плагінів
Написання першого плагіна
Структура каталогу проєкту

Серверна розробка

Огляд
Плагін (Plugin)
Колекції (таблиці даних)
Операції з базою даних (Database)
Керування джерелами даних (DataSourceManager)
Керування ресурсами (ResourceManager)
Контроль доступу (ACL)
Проміжне ПЗ (Middleware)
Кеш (Cache)
Подія (Event)
Контекст запиту (Context)
Скрипт оновлення (Migration)
Логи (Logger)
Інтернаціоналізація (I18n)
Командний рядок (Command)
Керування завданнями за розкладом (CronJobManager)
Тестування (Test)

Клієнтська розробка

Огляд
Плагін (Plugin)
Контекст (Context)
Маршрутизатор (Router)
Контроль доступу (ACL)
Керування джерелами даних (DataSourceManager)
Ресурс (Resource)
Запит (Request)
Стилі та теми (Styles & Themes)
Логи (Logger)
Інтернаціоналізація (I18n)
Тестування (Test)

Інше

Посібник з оновлення плагінів
Список мов
Керування залежностями
Збірка
Previous PageОперації з базою даних (Database)
Next PageКерування ресурсами (ResourceManager)
Повідомлення про переклад ШІ

Ця документація була автоматично перекладена штучним інтелектом.

#DataSourceManager: Керування джерелами даних

NocoBase надає DataSourceManager для керування кількома джерелами даних. Кожне DataSource має власні екземпляри Database, ResourceManager та ACL, що дозволяє розробникам гнучко керувати та розширювати різні джерела даних.

#Основні концепції

Кожен екземпляр DataSource містить наступне:

  • dataSource.collectionManager: Використовується для керування колекціями та полями.
  • dataSource.resourceManager: Обробляє операції, пов'язані з ресурсами (наприклад, створення, читання, оновлення, видалення тощо).
  • dataSource.acl: Контроль доступу (ACL) для операцій з ресурсами.

Для зручного доступу надаються псевдоніми для основних членів джерела даних:

  • app.db` еквівалентно `dataSourceManager.get('main').collectionManager.db
  • app.acl` еквівалентно `dataSourceManager.get('main').acl
  • app.resourceManager` еквівалентно `dataSourceManager.get('main').resourceManager

#Поширені методи

#dataSourceManager.get(dataSourceKey)

Цей метод повертає вказаний екземпляр DataSource.

const dataSource = dataSourceManager.get('main');

#dataSourceManager.use()

Реєструє проміжне програмне забезпечення (middleware) для всіх джерел даних. Це вплине на операції з усіма джерелами даних.

dataSourceManager.use((ctx, next) => {
  console.log('This middleware applies to all data sources.');
  await next();
});

#dataSourceManager.beforeAddDataSource()

Виконується перед завантаженням джерела даних. Зазвичай використовується для реєстрації статичних класів, таких як класи моделей та типи полів:

dataSourceManager.beforeAddDataSource((dataSource: DataSource) => {
  const collectionManager = dataSource.collectionManager;
  if (collectionManager instanceof SequelizeCollectionManager) {
    collectionManager.registerFieldTypes({
      belongsToArray: BelongsToArrayField, // Користувацький тип поля
    });
  }
});

#dataSourceManager.afterAddDataSource()

Виконується після завантаження джерела даних. Зазвичай використовується для реєстрації операцій, налаштування контролю доступу тощо.

dataSourceManager.afterAddDataSource((dataSource) => {
  dataSource.resourceManager.registerActionHandler('downloadXlsxTemplate', downloadXlsxTemplate);
  dataSource.resourceManager.registerActionHandler('importXlsx', importXlsx);
  dataSource.acl.allow('*', 'downloadXlsxTemplate', 'loggedIn'); // Налаштування прав доступу
});

#Розширення джерел даних

Щоб отримати повну інформацію про розширення джерел даних, зверніться до розділу «Розширення джерел даних».