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

Hızlı Başlangıç

Eklenti Geliştirmeye Genel Bakış
İlk Eklentinizi Yazma
Proje Dizin Yapısı

Sunucu Taraflı Geliştirme

Genel Bakış
Plugin
Collections
Database İşlemleri
DataSourceManager
ResourceManager
ACL İzin Kontrolü
Middleware
Cache
Event
Context
Migration
Logger
I18n
Command
CronJobManager
Test

İstemci Taraflı Geliştirme

Genel Bakış
Plugin
Context
Router
ACL İzin Kontrolü
DataSourceManager
Resource
Request
Styles & Themes
Logger
I18n
Test

Diğer

Eklenti Yükseltme Kılavuzu
Dil Listesi
Bağımlılık Yönetimi
Derleme
Previous PageCache
Next PageContext
TIP

Bu belge AI tarafından çevrilmiştir. Herhangi bir yanlışlık için lütfen İngilizce sürümüne bakın

#Olaylar

NocoBase'in sunucusu, uygulama yaşam döngüsü, eklenti yaşam döngüsü ve veritabanı işlemleri gibi çeşitli aşamalarda ilgili olayları tetikler. Eklenti geliştiricileri, bu olayları dinleyerek genişletme mantığı, otomatik işlemler veya özel davranışlar uygulayabilirler.

NocoBase'in olay sistemi temel olarak iki seviyeye ayrılır:

  • app.on() - Uygulama Seviyesi Olayları: Uygulamanın başlatma, kurulum, eklentileri etkinleştirme gibi yaşam döngüsü olaylarını dinler.
  • db.on() - Veritabanı Seviyesi Olayları: Veri modeli seviyesindeki kayıt oluşturma, güncelleme, silme gibi işlem olaylarını dinler.

Her ikisi de Node.js'in EventEmitter sınıfından miras alır ve standart .on(), .off(), .emit() arayüzlerini destekler. NocoBase ayrıca, olayları eşzamansız olarak tetiklemek ve tüm dinleyicilerin yürütmeyi tamamlamasını beklemek için emitAsync desteğini de genişletmiştir.

#Olay Dinleyicilerini Kaydetme Konumu

Olay dinleyicileri genellikle eklentinin beforeLoad() metodunda kaydedilmelidir. Bu, olayların eklenti yükleme aşamasında hazır olmasını ve sonraki mantığın doğru şekilde yanıt verebilmesini sağlar.

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

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

    // Uygulama olaylarını dinleyin
    this.app.on('afterStart', () => {
      app.logger.info('NocoBase başlatıldı');
    });

    // Veritabanı olaylarını dinleyin
    this.db.on('afterCreate', (model) => {
      if (model.collectionName === 'posts') {
        app.logger.info(`Yeni gönderi: ${model.get('title')}`);
      }
    });
  }
}

#Uygulama Olaylarını Dinleme app.on()

Uygulama olayları, NocoBase uygulamasının ve eklentilerinin yaşam döngüsü değişikliklerini yakalamak için kullanılır. Başlatma mantığı, kaynak kaydı veya eklenti bağımlılık tespiti gibi işlemler için uygundur.

#Tipik Olay Türleri

Olay AdıTetiklenme ZamanıTipik Kullanım Alanları
beforeLoad / afterLoadUygulama yüklenmeden önce / sonraKaynakları kaydetme, yapılandırmayı başlatma
beforeStart / afterStartServis başlamadan önce / sonraGörevleri başlatma, başlangıç günlüklerini yazdırma
beforeInstall / afterInstallUygulama kurulmadan önce / sonraVerileri başlatma, şablonları içe aktarma
beforeStop / afterStopServis durmadan önce / sonraKaynakları temizleme, durumu kaydetme
beforeDestroy / afterDestroyUygulama yok edilmeden önce / sonraÖnbelleği silme, bağlantıları kesme
beforeLoadPlugin / afterLoadPluginEklenti yüklenmeden önce / sonraEklenti yapılandırmasını değiştirme veya işlevselliği genişletme
beforeEnablePlugin / afterEnablePluginEklenti etkinleştirilmeden önce / sonraBağımlılıkları kontrol etme, eklenti mantığını başlatma
beforeDisablePlugin / afterDisablePluginEklenti devre dışı bırakılmadan önce / sonraEklenti kaynaklarını temizleme
afterUpgradeUygulama yükseltmesi tamamlandıktan sonraVeri geçişi veya uyumluluk düzeltmeleri yapma

Örnek: Uygulama başlatma olayını dinleme

app.on('afterStart', async () => {
  app.logger.info('🚀 NocoBase servisi başlatıldı!');
});

Örnek: Eklenti yükleme olayını dinleme

app.on('afterLoadPlugin', ({ plugin }) => {
  app.logger.info(`Eklenti ${plugin.name} yüklendi`);
});

#Veritabanı Olaylarını Dinleme db.on()

Veritabanı olayları, model seviyesindeki çeşitli veri değişikliklerini yakalayabilir; denetim, senkronizasyon, otomatik doldurma gibi işlemler için uygundur.

#Tipik Olay Türleri

Olay AdıTetiklenme Zamanı
beforeSync / afterSyncVeritabanı yapısı senkronize edilmeden önce / sonra
beforeValidate / afterValidateVeri doğrulanmadan önce / sonra
beforeCreate / afterCreateKayıt oluşturulmadan önce / sonra
beforeUpdate / afterUpdateKayıt güncellenmeden önce / sonra
beforeSave / afterSaveKaydedilmeden önce / sonra (oluşturma ve güncelleme dahil)
beforeDestroy / afterDestroyKayıt silinmeden önce / sonra
afterCreateWithAssociations / afterUpdateWithAssociations / afterSaveWithAssociationsİlişkili verileri içeren işlemlerden sonra
beforeDefineCollection / afterDefineCollectionKoleksiyon tanımlanmadan önce / sonra
beforeRemoveCollection / afterRemoveCollectionKoleksiyon silinmeden önce / sonra

Örnek: Veri oluşturulduktan sonraki olayı dinleme

db.on('afterCreate', async (model, options) => {
  db.logger.info('Veri oluşturuldu!');
});

Örnek: Veri güncellenmeden önceki olayı dinleme

db.on('beforeUpdate', async (model, options) => {
  db.logger.info('Veri güncellenmek üzere!');
});