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

Snelstart

Overzicht plug-inontwikkeling
Eerste plug-in schrijven
Projectstructuur

Server-side ontwikkeling

Overzicht
Plug-in
Collecties
Database
DataSourceManager
ResourceManager
ACL
Middleware
Cache
Events
Context
Migratie
Logger
I18n
Commando
CronJobManager
Test

Client-side ontwikkeling

Overzicht
Plug-in
Context
Router
ACL
DataSourceManager
Resource
Request
Stijlen & Thema's
Logger
I18n
Test

Overig

Upgrade-gids voor plug-ins
Talenlijst
Dependency-beheer
Build
Previous PageCache
Next PageContext
TIP

Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie

#Event

De server van NocoBase genereert events (gebeurtenissen) tijdens de levenscyclus van de applicatie, de levenscyclus van plugins en databasebewerkingen. Plugin-ontwikkelaars kunnen naar deze events luisteren om uitbreidingslogica, geautomatiseerde handelingen of aangepast gedrag te implementeren.

Het eventsysteem van NocoBase is hoofdzakelijk verdeeld in twee niveaus:

  • app.on() - Events op applicatieniveau: Luister naar levenscyclus-events van de applicatie, zoals het starten, installeren of inschakelen van plugins.
  • db.on() - Events op databaseniveau: Luister naar operationele events op datamodel-niveau, zoals het aanmaken, bijwerken of verwijderen van records.

Beide erven over van Node.js's EventEmitter en ondersteunen de standaard .on(), .off() en .emit() interfaces. NocoBase biedt ook uitgebreide ondersteuning voor emitAsync, dat wordt gebruikt om events asynchroon te activeren en te wachten tot alle listeners hun uitvoering hebben voltooid.

#Waar u event-listeners registreert

Event-listeners moeten over het algemeen worden geregistreerd in de beforeLoad()-methode van de plugin. Dit zorgt ervoor dat de events al klaar zijn tijdens de laadfase van de plugin en dat de daaropvolgende logica correct kan reageren.

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

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

    // Luister naar applicatie-events
    this.app.on('afterStart', () => {
      app.logger.info('NocoBase is gestart');
    });

    // Luister naar database-events
    this.db.on('afterCreate', (model) => {
      if (model.collectionName === 'posts') {
        app.logger.info(`Nieuw bericht: ${model.get('title')}`);
      }
    });
  }
}

#Luisteren naar applicatie-events app.on()

Applicatie-events worden gebruikt om veranderingen in de levenscyclus van de NocoBase-applicatie en plugins vast te leggen. Ze zijn geschikt voor initialisatielogica, resourceregistratie of het detecteren van plugin-afhankelijkheden.

#Veelvoorkomende event-types

EventnaamMoment van activeringTypische toepassingen
beforeLoad / afterLoadVoor / na het laden van de applicatieResources registreren, configuratie initialiseren
beforeStart / afterStartVoor / na het starten van de serviceTaken starten, opstartlogs afdrukken
beforeInstall / afterInstallVoor / na de installatie van de applicatieGegevens initialiseren, sjablonen importeren
beforeStop / afterStopVoor / na het stoppen van de serviceResources opschonen, status opslaan
beforeDestroy / afterDestroyVoor / na het vernietigen van de applicatieCache verwijderen, verbindingen verbreken
beforeLoadPlugin / afterLoadPluginVoor / na het laden van een pluginPlugin-configuratie aanpassen of functionaliteit uitbreiden
beforeEnablePlugin / afterEnablePluginVoor / na het inschakelen van een pluginAfhankelijkheden controleren, plugin-logica initialiseren
beforeDisablePlugin / afterDisablePluginVoor / na het uitschakelen van een pluginPlugin-resources opschonen
afterUpgradeNa het voltooien van een applicatie-upgradeGegevensmigratie of compatibiliteitsfixes uitvoeren

Voorbeeld: Luisteren naar het opstart-event van de applicatie

app.on('afterStart', async () => {
  app.logger.info('🚀 NocoBase-service is gestart!');
});

Voorbeeld: Luisteren naar het laad-event van een plugin

app.on('afterLoadPlugin', ({ plugin }) => {
  app.logger.info(`Plugin ${plugin.name} is geladen`);
});

#Luisteren naar database-events db.on()

Database-events kunnen diverse gegevenswijzigingen op modelniveau vastleggen. Ze zijn geschikt voor auditing, synchronisatie, automatisch aanvullen en andere bewerkingen.

#Veelvoorkomende event-types

EventnaamMoment van activering
beforeSync / afterSyncVoor / na het synchroniseren van de databasestructuur
beforeValidate / afterValidateVoor / na gegevensvalidatie
beforeCreate / afterCreateVoor / na het aanmaken van records
beforeUpdate / afterUpdateVoor / na het bijwerken van records
beforeSave / afterSaveVoor / na het opslaan (inclusief aanmaken en bijwerken)
beforeDestroy / afterDestroyVoor / na het verwijderen van records
afterCreateWithAssociations / afterUpdateWithAssociations / afterSaveWithAssociationsNa bewerkingen die gekoppelde gegevens bevatten
beforeDefineCollection / afterDefineCollectionVoor / na het definiëren van collecties
beforeRemoveCollection / afterRemoveCollectionVoor / na het verwijderen van collecties

Voorbeeld: Luisteren naar het event na het aanmaken van gegevens

db.on('afterCreate', async (model, options) => {
  db.logger.info('Gegevens zijn aangemaakt!');
});

Voorbeeld: Luisteren naar het event vóór het bijwerken van gegevens

db.on('beforeUpdate', async (model, options) => {
  db.logger.info('Gegevens staan op het punt te worden bijgewerkt!');
});