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

התחלה מהירה

סקירת פיתוח Plugin
כתיבת Plugin ראשון
מבנה תיקיות הפרויקט

פיתוח Server-side

סקירה כללית
Plugin
Collections טבלאות נתונים
Database: פעולות
DataSourceManager - ניהול מקורות נתונים
ResourceManager
ACL בקרת הרשאות
Middleware
Cache
Event
Context - הקשר בקשה
Migration סקריפט שדרוג
Logger יומן
Telemetry
I18n בינאום
Command
CronJobManager ניהול משימות מתוזמנות
Test

פיתוח Client-side

סקירה כללית
Plugin
Context
Router ניתוב
ACL בקרת הרשאות
DataSourceManager - ניהול מקורות נתונים
Resource
Request
Styles & Themes
Logger יומן
I18n בינאום
Test

אחר

מדריך שדרוג Plugin
רשימת שפות
ניהול תלויות
בנייה
Previous PageCache
Next PageContext - הקשר בקשה
TIP

מסמך זה תורגם על ידי בינה מלאכותית. לכל אי דיוק, אנא עיין בגרסה האנגלית

#אירועים

השרת של NocoBase מפעיל אירועים מתאימים במהלך מחזור חיי היישום, מחזור חיי התוסף ופעולות מסד נתונים. מפתחי תוספים יכולים להאזין לאירועים אלה כדי ליישם לוגיקה מורחבת, פעולות אוטומטיות או התנהגויות מותאמות אישית.

מערכת האירועים של NocoBase מחולקת בעיקר לשתי רמות:

  • app.on() - אירועים ברמת היישום: מאזינים לאירועי מחזור חיי היישום, כגון הפעלה, התקנה, הפעלת תוספים ועוד.
  • db.on() - אירועים ברמת מסד הנתונים: מאזינים לאירועי פעולה ברמת מודל הנתונים, כגון יצירה, עדכון או מחיקת רשומות.

שניהם יורשים מ-EventEmitter של Node.js, ותומכים בשימוש בממשקי .on(), .off() ו-.emit() הסטנדרטיים. NocoBase גם הרחיבה את התמיכה ב-emitAsync, המשמש להפעלת אירועים באופן אסינכרוני ולהמתנה להשלמת ביצוע כל המאזינים.

#היכן לרשום מאזיני אירועים

מאזיני אירועים נרשמים בדרך כלל בשיטת beforeLoad() של התוסף, מה שמבטיח שהאירועים יהיו מוכנים כבר בשלב טעינת התוסף, ושהלוגיקה העוקבת תוכל להגיב כראוי.

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

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

    // האזנה לאירועי יישום
    this.app.on('afterStart', () => {
      app.logger.info('NocoBase הופעל');
    });

    // האזנה לאירועי מסד נתונים
    this.db.on('afterCreate', (model) => {
      if (model.collectionName === 'posts') {
        app.logger.info(`פוסט חדש: ${model.get('title')}`);
      }
    });
  }
}

#האזנה לאירועי יישום app.on()

אירועי יישום משמשים ללכידת שינויים במחזור החיים של יישום NocoBase ושל התוספים שלו, והם מתאימים ללוגיקת אתחול, רישום משאבים או זיהוי תלויות תוספים.

#סוגי אירועים נפוצים

שם האירועמועד ההפעלהשימושים אופייניים
beforeLoad / afterLoadלפני / אחרי טעינת היישוםרישום משאבים, אתחול תצורה
beforeStart / afterStartלפני / אחרי הפעלת השירותהפעלת משימות, הדפסת יומני הפעלה
beforeInstall / afterInstallלפני / אחרי התקנת היישוםאתחול נתונים, ייבוא תבניות
beforeStop / afterStopלפני / אחרי עצירת השירותניקוי משאבים, שמירת מצב
beforeDestroy / afterDestroyלפני / אחרי השמדת היישוםמחיקת מטמון, ניתוק חיבורים
beforeLoadPlugin / afterLoadPluginלפני / אחרי טעינת תוסףשינוי תצורת תוסף או הרחבת פונקציונליות
beforeEnablePlugin / afterEnablePluginלפני / אחרי הפעלת תוסףבדיקת תלויות, אתחול לוגיקת תוסף
beforeDisablePlugin / afterDisablePluginלפני / אחרי השבתת תוסףניקוי משאבי תוסף
afterUpgradeלאחר השלמת שדרוג היישוםביצוע העברת נתונים או תיקוני תאימות

דוגמה: האזנה לאירוע הפעלת יישום

app.on('afterStart', async () => {
  app.logger.info('🚀 שירות NocoBase הופעל!');
});

דוגמה: האזנה לאירוע טעינת תוסף

app.on('afterLoadPlugin', ({ plugin }) => {
  app.logger.info(`התוסף ${plugin.name} נטען`);
});

#האזנה לאירועי מסד נתונים db.on()

אירועי מסד נתונים יכולים ללכוד שינויים שונים בנתונים ברמת המודל, והם מתאימים לפעולות כמו ביקורת, סנכרון, מילוי אוטומטי ועוד.

#סוגי אירועים נפוצים

שם האירועמועד ההפעלה
beforeSync / afterSyncלפני / אחרי סנכרון מבנה מסד הנתונים
beforeValidate / afterValidateלפני / אחרי אימות נתונים
beforeCreate / afterCreateלפני / אחרי יצירת רשומות
beforeUpdate / afterUpdateלפני / אחרי עדכון רשומות
beforeSave / afterSaveלפני / אחרי שמירה (כולל יצירה ועדכון)
beforeDestroy / afterDestroyלפני / אחרי מחיקת רשומות
afterCreateWithAssociations / afterUpdateWithAssociations / afterSaveWithAssociationsלאחר פעולות הכוללות נתונים מקושרים
beforeDefineCollection / afterDefineCollectionלפני / אחרי הגדרת אוסף
beforeRemoveCollection / afterRemoveCollectionלפני / אחרי מחיקת אוסף

דוגמה: האזנה לאירוע לאחר יצירת נתונים

db.on('afterCreate', async (model, options) => {
  db.logger.info('הנתונים נוצרו!');
});

דוגמה: האזנה לאירוע לפני עדכון נתונים

db.on('beforeUpdate', async (model, options) => {
  db.logger.info('הנתונים עומדים להתעדכן!');
});