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

Avvio Rapido

Panoramica Sviluppo Plugin
Scrivere il Primo Plugin
Struttura Directory Progetto

Sviluppo Server-side

Panoramica
Plugin
Collezioni (Tabelle Dati)
Operazioni Database
Gestione Origini Dati (DataSourceManager)
Gestione Risorse (ResourceManager)
Controllo Accessi (ACL)
Middleware
Cache
Eventi
Contesto Richiesta
Script di Migrazione
Logger
Internazionalizzazione (I18n)
Comando
Gestione Cron Job
Test

Sviluppo Client-side

Panoramica
Plugin
Contesto
Router
Controllo Accessi (ACL)
Gestione Origini Dati (DataSourceManager)
Risorse
Richieste
Stili e Temi
Logger
Internazionalizzazione (I18n)
Test

Altro

Guida all'Aggiornamento Plugin
Elenco Lingue
Gestione Dipendenze
Build
Previous PageCache
Next PageContesto Richiesta
Avviso di traduzione IA

Questa documentazione è stata tradotta automaticamente dall'IA.

#Evento

Il server di NocoBase (Server) attiva eventi specifici durante il ciclo di vita dell'applicazione, quello dei plugin e le operazioni sul database. Gli sviluppatori di plugin possono ascoltare questi eventi per implementare logiche di estensione, automatizzare operazioni o definire comportamenti personalizzati.

Il sistema di eventi di NocoBase si articola principalmente su due livelli:

  • app.on() - Eventi a livello di applicazione: Permettono di ascoltare gli eventi del ciclo di vita dell'applicazione, come l'avvio, l'installazione, l'attivazione dei plugin, ecc.
  • db.on() - Eventi a livello di database: Permettono di ascoltare gli eventi operativi a livello del modello dati, come la creazione, l'aggiornamento o l'eliminazione di record.

Entrambi ereditano da EventEmitter di Node.js e supportano le interfacce standard .on(), .off() e .emit(). NocoBase estende inoltre il supporto per emitAsync, utilizzato per attivare eventi in modo asincrono e attendere il completamento dell'esecuzione di tutti i listener.

#Dove registrare i listener degli eventi

I listener degli eventi dovrebbero essere generalmente registrati nel metodo beforeLoad() del plugin. Questo assicura che gli eventi siano pronti durante la fase di caricamento del plugin e che la logica successiva possa rispondere correttamente.

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

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

    // Ascolta gli eventi dell'applicazione
    this.app.on('afterStart', () => {
      app.logger.info('NocoBase è stato avviato');
    });

    // Ascolta gli eventi del database
    this.db.on('afterCreate', (model) => {
      if (model.collectionName === 'posts') {
        app.logger.info(`Nuovo post: ${model.get('title')}`);
      }
    });
  }
}

#Ascoltare gli eventi dell'applicazione app.on()

Gli eventi dell'applicazione servono a catturare i cambiamenti nel ciclo di vita dell'applicazione NocoBase e dei suoi plugin. Sono ideali per la logica di inizializzazione, la registrazione di risorse o il rilevamento delle dipendenze dei plugin.

#Tipi di eventi comuni

Nome eventoMomento di attivazioneUsi tipici
beforeLoad / afterLoadPrima / dopo il caricamento dell'applicazioneRegistrare risorse, inizializzare la configurazione
beforeStart / afterStartPrima / dopo l'avvio del servizioAvviare attività, registrare l'avvio
beforeInstall / afterInstallPrima / dopo l'installazione dell'applicazioneInizializzare dati, importare modelli
beforeStop / afterStopPrima / dopo l'arresto del servizioPulire risorse, salvare lo stato
beforeDestroy / afterDestroyPrima / dopo la distruzione dell'applicazioneEliminare cache, disconnettere connessioni
beforeLoadPlugin / afterLoadPluginPrima / dopo il caricamento del pluginModificare la configurazione del plugin o estendere le funzionalità
beforeEnablePlugin / afterEnablePluginPrima / dopo l'attivazione del pluginControllare le dipendenze, inizializzare la logica del plugin
beforeDisablePlugin / afterDisablePluginPrima / dopo la disattivazione del pluginPulire le risorse del plugin
afterUpgradeDopo il completamento dell'aggiornamento dell'applicazioneEseguire migrazioni di dati o correzioni di compatibilità

Esempio: Ascoltare l'evento di avvio dell'applicazione

app.on('afterStart', async () => {
  app.logger.info('🚀 Il servizio NocoBase è stato avviato!');
});

Esempio: Ascoltare l'evento di caricamento del plugin

app.on('afterLoadPlugin', ({ plugin }) => {
  app.logger.info(`Il plugin ${plugin.name} è stato caricato`);
});

#Ascoltare gli eventi del database db.on()

Gli eventi del database possono catturare varie modifiche ai dati a livello del modello, rendendoli adatti per operazioni di auditing, sincronizzazione o auto-completamento.

#Tipi di eventi comuni

Nome eventoMomento di attivazione
beforeSync / afterSyncPrima / dopo la sincronizzazione della struttura del database
beforeValidate / afterValidatePrima / dopo la validazione dei dati
beforeCreate / afterCreatePrima / dopo la creazione di record
beforeUpdate / afterUpdatePrima / dopo l'aggiornamento di record
beforeSave / afterSavePrima / dopo il salvataggio (include creazione e aggiornamento)
beforeDestroy / afterDestroyPrima / dopo l'eliminazione di record
afterCreateWithAssociations / afterUpdateWithAssociations / afterSaveWithAssociationsDopo operazioni che includono dati associati
beforeDefineCollection / afterDefineCollectionPrima / dopo la definizione di una collezione
beforeRemoveCollection / afterRemoveCollectionPrima / dopo la rimozione di una collezione

Esempio: Ascoltare l'evento dopo la creazione dei dati

db.on('afterCreate', async (model, options) => {
  db.logger.info('I dati sono stati creati!');
});

Esempio: Ascoltare l'evento prima dell'aggiornamento dei dati

db.on('beforeUpdate', async (model, options) => {
  db.logger.info('I dati stanno per essere aggiornati!');
});