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 PageCache
Next PageKontext požadavku
TIP

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

#Události

Server NocoBase spouští odpovídající události během životního cyklu aplikace, životního cyklu pluginů a databázových operací. Vývojáři pluginů mohou tyto události poslouchat a implementovat tak rozšiřující logiku, automatizované operace nebo vlastní chování.

Systém událostí NocoBase je rozdělen především do dvou úrovní:

  • app.on() – Události na úrovni aplikace: Poslouchejte události životního cyklu aplikace, jako je spuštění, instalace, povolení pluginů atd.
  • db.on() – Události na úrovni databáze: Poslouchejte události operací na úrovni datového modelu, jako je vytváření, aktualizace, mazání záznamů atd.

Obě úrovně dědí z EventEmitter Node.js a podporují standardní rozhraní .on(), .off() a .emit(). NocoBase navíc rozšiřuje podporu o emitAsync, který slouží k asynchronnímu spouštění událostí a čekání na dokončení všech posluchačů.

#Kde registrovat posluchače událostí

Posluchače událostí byste měli obecně registrovat v metodě beforeLoad() vašeho pluginu. Tím zajistíte, že události budou připraveny již během fáze načítání pluginu a následná logika na ně bude moci správně reagovat.

import { Plugin } from '@nocobase/server';

export default class PluginHelloServer extends Plugin {
  async beforeLoad() {

    // Poslouchání událostí aplikace
    this.app.on('afterStart', () => {
      app.logger.info('NocoBase byl spuštěn');
    });

    // Poslouchání databázových událostí
    this.db.on('afterCreate', (model) => {
      if (model.collectionName === 'posts') {
        app.logger.info(`Nový příspěvek: ${model.get('title')}`);
      }
    });
  }
}

#Poslouchání událostí aplikace app.on()

Události aplikace slouží k zachycení změn životního cyklu aplikace NocoBase a jejích pluginů. Jsou vhodné pro inicializační logiku, registraci zdrojů nebo detekci závislostí pluginů.

#Běžné typy událostí

Název událostiKdy se spustíTypické použití
beforeLoad / afterLoadPřed / po načtení aplikaceRegistrace zdrojů, inicializace konfigurace
beforeStart / afterStartPřed / po spuštění službySpuštění úloh, tisk spouštěcích logů
beforeInstall / afterInstallPřed / po instalaci aplikaceInicializace dat, import šablon
beforeStop / afterStopPřed / po zastavení službyVyčištění zdrojů, uložení stavu
beforeDestroy / afterDestroyPřed / po zničení aplikaceSmazání cache, odpojení připojení
beforeLoadPlugin / afterLoadPluginPřed / po načtení pluginuÚprava konfigurace pluginu nebo rozšíření funkcionality
beforeEnablePlugin / afterEnablePluginPřed / po povolení pluginuKontrola závislostí, inicializace logiky pluginu
beforeDisablePlugin / afterDisablePluginPřed / po zakázání pluginuVyčištění zdrojů pluginu
afterUpgradePo dokončení aktualizace aplikaceProvedení migrace dat nebo oprav kompatibility

Příklad: Poslouchání události spuštění aplikace

app.on('afterStart', async () => {
  app.logger.info('🚀 Služba NocoBase byla spuštěna!');
});

Příklad: Poslouchání události načtení pluginu

app.on('afterLoadPlugin', ({ plugin }) => {
  app.logger.info(`Plugin ${plugin.name} byl načten`);
});

#Poslouchání databázových událostí db.on()

Databázové události mohou zachytit různé změny dat na úrovni modelu. Jsou vhodné pro auditování, synchronizaci, automatické vyplňování a další operace.

#Běžné typy událostí

Název událostiKdy se spustí
beforeSync / afterSyncPřed / po synchronizaci databázové struktury
beforeValidate / afterValidatePřed / po validaci dat
beforeCreate / afterCreatePřed / po vytvoření záznamů
beforeUpdate / afterUpdatePřed / po aktualizaci záznamů
beforeSave / afterSavePřed / po uložení (zahrnuje vytvoření a aktualizaci)
beforeDestroy / afterDestroyPřed / po smazání záznamů
afterCreateWithAssociations / afterUpdateWithAssociations / afterSaveWithAssociationsPo operacích zahrnujících asociovaná data
beforeDefineCollection / afterDefineCollectionPřed / po definování kolekcí
beforeRemoveCollection / afterRemoveCollectionPřed / po odstranění kolekcí

Příklad: Poslouchání události po vytvoření dat

db.on('afterCreate', async (model, options) => {
  db.logger.info('Data byla vytvořena!');
});

Příklad: Poslouchání události před aktualizací dat

db.on('beforeUpdate', async (model, options) => {
  db.logger.info('Data budou aktualizována!');
});