logologo
Mulai
Panduan
Pengembangan
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
Mulai
Panduan
Pengembangan
Plugin
API
logologo

Mulai Cepat

Gambaran Umum Pengembangan Plugin
Menulis Plugin Pertama
Struktur Direktori Proyek

Pengembangan Sisi Server

Ikhtisar
Plugin
Collections
Operasi Database
Manajemen Sumber Data
Manajemen Sumber Daya
ACL
Middleware
Cache
Event
Konteks Permintaan
Skrip Migrasi
Logger
I18n
Command
Manajemen Tugas Terjadwal
Test

Pengembangan Sisi Klien

Ikhtisar
Plugin
Konteks
Router
ACL
Manajemen Sumber Data
Resource
Request
Gaya & Tema
Logger
I18n
Test

Lainnya

Panduan Peningkatan Plugin
Daftar Bahasa
Manajemen Dependensi
Build
Previous PageCache
Next PageKonteks Permintaan
TIP

Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris

#Event

Server NocoBase akan memicu event (peristiwa) yang sesuai selama siklus hidup aplikasi, siklus hidup plugin, dan operasi basis data. Pengembang plugin dapat mendengarkan event ini untuk mengimplementasikan logika ekstensi, operasi otomatis, atau perilaku kustom.

Sistem event NocoBase dibagi menjadi dua tingkatan utama:

  • app.on() - Event Tingkat Aplikasi: Mendengarkan event siklus hidup aplikasi, seperti saat memulai, menginstal, mengaktifkan plugin, dll.
  • db.on() - Event Tingkat Basis Data: Mendengarkan event operasi pada tingkat model data, seperti membuat, memperbarui, menghapus catatan, dll.

Keduanya mewarisi dari EventEmitter Node.js, mendukung penggunaan antarmuka standar .on(), .off(), .emit(). NocoBase juga memperluas dukungan untuk emitAsync, yang digunakan untuk memicu event secara asinkron dan menunggu semua pendengar selesai dieksekusi.

#Tempat Mendaftarkan Pendengar Event

Pendengar event umumnya harus didaftarkan dalam metode beforeLoad() plugin. Hal ini memastikan bahwa event sudah siap selama fase pemuatan plugin, dan logika selanjutnya dapat merespons dengan benar.

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

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

    // Mendengarkan event aplikasi
    this.app.on('afterStart', () => {
      app.logger.info('NocoBase telah dimulai');
    });

    // Mendengarkan event basis data
    this.db.on('afterCreate', (model) => {
      if (model.collectionName === 'posts') {
        app.logger.info(`Postingan baru: ${model.get('title')}`);
      }
    });
  }
}

#Mendengarkan Event Aplikasi app.on()

Event aplikasi digunakan untuk menangkap perubahan siklus hidup aplikasi NocoBase dan plugin, cocok untuk logika inisialisasi, pendaftaran sumber daya, atau deteksi dependensi plugin.

#Jenis Event Umum

Nama EventWaktu PemicuanKegunaan Umum
beforeLoad / afterLoadSebelum / setelah pemuatan aplikasiMendaftarkan sumber daya, menginisialisasi konfigurasi
beforeStart / afterStartSebelum / setelah layanan dimulaiMemulai tugas, mencetak log startup
beforeInstall / afterInstallSebelum / setelah instalasi aplikasiMenginisialisasi data, mengimpor template
beforeStop / afterStopSebelum / setelah layanan berhentiMembersihkan sumber daya, menyimpan status
beforeDestroy / afterDestroySebelum / setelah penghancuran aplikasiMenghapus cache, memutuskan koneksi
beforeLoadPlugin / afterLoadPluginSebelum / setelah pemuatan pluginMengubah konfigurasi plugin atau memperluas fungsionalitas
beforeEnablePlugin / afterEnablePluginSebelum / setelah pengaktifan pluginMemeriksa dependensi, menginisialisasi logika plugin
beforeDisablePlugin / afterDisablePluginSebelum / setelah penonaktifan pluginMembersihkan sumber daya plugin
afterUpgradeSetelah pembaruan aplikasi selesaiMelakukan migrasi data atau perbaikan kompatibilitas

Contoh: Mendengarkan event startup aplikasi

app.on('afterStart', async () => {
  app.logger.info('🚀 Layanan NocoBase telah dimulai!');
});

Contoh: Mendengarkan event pemuatan plugin

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

#Mendengarkan Event Basis Data db.on()

Event basis data dapat menangkap berbagai perubahan data pada tingkat model, cocok untuk audit, sinkronisasi, pengisian otomatis, dan operasi lainnya.

#Jenis Event Umum

Nama EventWaktu Pemicuan
beforeSync / afterSyncSebelum / setelah sinkronisasi struktur basis data
beforeValidate / afterValidateSebelum / setelah validasi data
beforeCreate / afterCreateSebelum / setelah membuat catatan
beforeUpdate / afterUpdateSebelum / setelah memperbarui catatan
beforeSave / afterSaveSebelum / setelah menyimpan (termasuk membuat dan memperbarui)
beforeDestroy / afterDestroySebelum / setelah menghapus catatan
afterCreateWithAssociations / afterUpdateWithAssociations / afterSaveWithAssociationsSetelah operasi yang mencakup data asosiasi
beforeDefineCollection / afterDefineCollectionSebelum / setelah mendefinisikan koleksi
beforeRemoveCollection / afterRemoveCollectionSebelum / setelah menghapus koleksi

Contoh: Mendengarkan event setelah pembuatan data

db.on('afterCreate', async (model, options) => {
  db.logger.info('Data telah dibuat!');
});

Contoh: Mendengarkan event sebelum pembaruan data

db.on('beforeUpdate', async (model, options) => {
  db.logger.info('Data akan diperbarui!');
});