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 लिखें
प्रोजेक्ट डायरेक्टरी स्ट्रक्चर

सर्वर-साइड डेवलपमेंट

अवलोकन
Plugin
कलेक्शन डेटा टेबल
डेटाबेस ऑपरेशन
DataSourceManager डेटा सोर्स प्रबंधन
ResourceManager रिसोर्स प्रबंधन
ACL परमिशन कंट्रोल
Middleware
Cache
Event
Context रिक्वेस्ट कॉन्टेक्स्ट
माइग्रेशन अपग्रेड स्क्रिप्ट
Logger
Telemetry
I18n इंटरनेशनलाइजेशन
Command लाइन
CronJobManager शेड्यूल्ड टास्क प्रबंधन
Test

क्लाइंट-साइड डेवलपमेंट

अवलोकन
Plugin
Context
Router
ACL परमिशन कंट्रोल
DataSourceManager डेटा सोर्स प्रबंधन
Resource
Request
Styles & Themes
Logger
I18n इंटरनेशनलाइजेशन
Test

अन्य

Plugin अपग्रेड गाइड
भाषा सूची
डिपेंडेंसी प्रबंधन
बिल्ड
Previous PageCache
Next PageContext रिक्वेस्ट कॉन्टेक्स्ट
TIP

यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया अंग्रेजी संस्करण देखें

#इवेंट

NocoBase का सर्वर (Server) एप्लीकेशन के जीवनचक्र, प्लगइन के जीवनचक्र और डेटाबेस ऑपरेशंस जैसे विभिन्न चरणों में संबंधित इवेंट (घटनाएँ) ट्रिगर करता है। प्लगइन डेवलपर इन इवेंट्स को सुनकर एक्सटेंशन लॉजिक, ऑटोमेटेड ऑपरेशंस या कस्टम व्यवहार लागू कर सकते हैं।

NocoBase का इवेंट सिस्टम मुख्य रूप से दो स्तरों में विभाजित है:

  • app.on() - एप्लीकेशन-स्तरीय इवेंट: एप्लीकेशन के जीवनचक्र इवेंट्स को सुनें, जैसे कि स्टार्ट होना, इंस्टॉल होना, प्लगइन को सक्षम करना आदि।
  • db.on() - डेटाबेस-स्तरीय इवेंट: डेटा मॉडल स्तर पर होने वाले ऑपरेशंस इवेंट्स को सुनें, जैसे कि रिकॉर्ड बनाना, अपडेट करना, हटाना आदि।

ये दोनों Node.js के EventEmitter से इनहेरिट होते हैं और स्टैंडर्ड .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('डेटा अपडेट होने वाला है!');
});