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 PageKolekce
Next PageSpráva zdrojů dat (DataSourceManager)
TIP

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

#Databáze

Database je důležitou součástí zdrojů dat (DataSource) typu databáze. Každý zdroj dat typu databáze má odpovídající instanci Database, ke které lze přistupovat prostřednictvím dataSource.db. Instance databáze hlavního zdroje dat navíc poskytuje pohodlný alias app.db. Seznámení se s běžnými metodami db je základem pro psaní serverových pluginů.

#Součásti databáze

Typická Database se skládá z následujících částí:

  • kolekce: Definuje strukturu datové tabulky.
  • Model: Odpovídá ORM modelům (obvykle spravovaným Sequelize).
  • Repository: Vrstva repozitáře, která zapouzdřuje logiku přístupu k datům a poskytuje metody pro operace na vyšší úrovni.
  • FieldType: Typy polí.
  • FilterOperator: Operátory používané pro filtrování.
  • Event: Události životního cyklu a databázové události.

#Kdy používat v pluginech

#Co je vhodné dělat ve fázi beforeLoad

V této fázi nejsou povoleny databázové operace. Je vhodná pro registraci statických tříd nebo naslouchání událostem.

  • db.registerFieldTypes() — Vlastní typy polí
  • db.registerModels() — Registrace vlastních tříd modelů
  • db.registerRepositories() — Registrace vlastních tříd repozitářů
  • db.registerOperators() — Registrace vlastních operátorů pro filtrování
  • db.on() — Naslouchání událostem souvisejícím s databází

#Co je vhodné dělat ve fázi load

V této fázi jsou již načteny všechny předchozí definice tříd a události, takže načítání datových tabulek nebude mít chybějící nebo opomenuté závislosti.

  • db.defineCollection() — Definování nových datových tabulek
  • db.extendCollection() — Rozšíření stávajících konfigurací datových tabulek

Pokud jde o definování vestavěných tabulek pluginu, doporučuje se je umístit do adresáře ./src/server/collections. Více informací naleznete v Kolekcích.

#Datové operace

Database poskytuje dva hlavní způsoby přístupu a manipulace s daty:

#Operace prostřednictvím Repository

const repo = db.getRepository('users');
const user = await repo.findOne({ filter: { id: 1 } });

Vrstva Repository se obvykle používá k zapouzdření obchodní logiky, jako je stránkování, filtrování, kontroly oprávnění atd.

#Operace prostřednictvím Modelu

const UserModel = db.getModel('users');
const user = await UserModel.findByPk(1);

Vrstva Model přímo odpovídá ORM entitám a je vhodná pro provádění databázových operací na nižší úrovni.

#Ve kterých fázích jsou povoleny databázové operace?

#Životní cyklus pluginu

FázePovoleny databázové operace
staticImportNe
afterAddNe
beforeLoadNe
loadNe
installAno
beforeEnableAno
afterEnableAno
beforeDisableAno
afterDisableAno
removeAno
handleSyncMessageAno

#Události aplikace

FázePovoleny databázové operace
beforeLoadNe
afterLoadNe
beforeStartAno
afterStartAno
beforeInstallNe
afterInstallAno
beforeStopAno
afterStopNe
beforeDestroyAno
afterDestroyNe
beforeLoadPluginNe
afterLoadPluginNe
beforeEnablePluginAno
afterEnablePluginAno
beforeDisablePluginAno
afterDisablePluginAno
afterUpgradeAno

#Události/háčky databáze

FázePovoleny databázové operace
beforeSyncNe
afterSyncAno
beforeValidateAno
afterValidateAno
beforeCreateAno
afterCreateAno
beforeUpdateAno
afterUpdateAno
beforeSaveAno
afterSaveAno
beforeDestroyAno
afterDestroyAno
afterCreateWithAssociationsAno
afterUpdateWithAssociationsAno
afterSaveWithAssociationsAno
beforeDefineCollectionNe
afterDefineCollectionNe
beforeRemoveCollectionNe
afterRemoveCollectionNe