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

Rychlý start

Přehled vývoje pluginů
Vytvoření prvního pluginu
Struktura adresářů projektu

Vývoj na straně serveru

Přehled
Plugin
Kolekce
Databázové operace
Správa zdrojů dat (DataSourceManager)
Správa zdrojů (ResourceManager)
Řízení přístupu (ACL)
Middleware
Cache
Události
Kontext požadavku
Migrace
Protokoly
Internacionalizace (I18n)
Příkazový řádek (Command)
Správa plánovaných úloh (CronJobManager)
Testování

Vývoj na straně klienta

Přehled
Plugin
Kontext
Router
Řízení přístupu (ACL)
Správa zdrojů dat (DataSourceManager)
Zdroje
Požadavky
Styly a motivy
Protokoly
Internacionalizace (I18n)
Testování

Ostatní

Průvodce aktualizací pluginů
Seznam jazyků
Správa závislostí
Sestavení
Previous PageDatabázové operace
Next PageSpráva zdrojů (ResourceManager)
TIP

Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na anglickou verzi

#DataSourceManager Správa zdrojů dat

NocoBase poskytuje DataSourceManager pro správu více zdrojů dat. Každý DataSource má vlastní instance Database, ResourceManager a ACL, což vývojářům umožňuje flexibilně spravovat a rozšiřovat více zdrojů dat.

#Základní koncepty

Každá instance DataSource obsahuje následující:

  • dataSource.collectionManager: Slouží ke správě kolekcí a polí.
  • dataSource.resourceManager: Zpracovává operace související se zdroji (například CRUD apod.).
  • dataSource.acl: Řízení přístupu (ACL) pro operace se zdroji.

Pro pohodlný přístup jsou k dispozici zkratky (aliasy) pro členy hlavního zdroje dat:

  • app.db je ekvivalentní dataSourceManager.get('main').collectionManager.db
  • app.acl je ekvivalentní dataSourceManager.get('main').acl
  • app.resourceManager je ekvivalentní dataSourceManager.get('main').resourceManager

#Běžné metody

#dataSourceManager.get(dataSourceKey)

Tato metoda vrací specifikovanou instanci DataSource.

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

#dataSourceManager.use()

Registruje middleware pro všechny zdroje dat. To ovlivní operace na všech zdrojích dat.

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

#dataSourceManager.beforeAddDataSource()

Spouští se před načtením zdroje dat. Běžně se používá pro registraci statických tříd, například tříd modelů a typů polí:

dataSourceManager.beforeAddDataSource((dataSource: DataSource) => {
  const collectionManager = dataSource.collectionManager;
  if (collectionManager instanceof SequelizeCollectionManager) {
    collectionManager.registerFieldTypes({
      belongsToArray: BelongsToArrayField, // Vlastní typ pole
    });
  }
});

#dataSourceManager.afterAddDataSource()

Spouští se po načtení zdroje dat. Běžně se používá pro registraci operací, nastavení řízení přístupu apod.

dataSourceManager.afterAddDataSource((dataSource) => {
  dataSource.resourceManager.registerActionHandler('downloadXlsxTemplate', downloadXlsxTemplate);
  dataSource.resourceManager.registerActionHandler('importXlsx', importXlsx);
  dataSource.acl.allow('*', 'downloadXlsxTemplate', 'loggedIn'); // Nastavení přístupových oprávnění
});

#Rozšíření zdroje dat

Kompletní rozšíření zdroje dat naleznete v kapitole o rozšíření zdroje dat.