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

Быстрый старт

Обзор разработки плагинов
Создание первого плагина
Структура каталогов проекта

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

Обзор
Плагин
Коллекции (таблицы данных)
Операции с базой данных
Управление источниками данных (DataSourceManager)
Управление ресурсами (ResourceManager)
Контроль доступа (ACL)
Промежуточное ПО (Middleware)
Кэш
Событие
Контекст запроса
Миграции
Логгер
Интернационализация (I18n)
Командная строка
Управление задачами Cron (CronJobManager)
Тестирование

Клиентская разработка

Обзор
Плагин
Контекст
Маршрутизатор
Контроль доступа (ACL)
Управление источниками данных (DataSourceManager)
Ресурс
Запрос
Стили и темы
Логгер
Интернационализация (I18n)
Тестирование

Прочее

Руководство по обновлению плагинов
Список языков
Управление зависимостями
Сборка
Previous PageОперации с базой данных
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()

Регистрирует промежуточное ПО для всех источников данных. Это повлияет на операции со всеми источниками данных.

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'); // Установка прав доступа
});

#Расширение источников данных

Полное описание расширения источников данных вы найдете в соответствующем разделе.