यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया अंग्रेजी संस्करण देखें
NocoBase प्लगइन के विकास और अपडेट के दौरान, प्लगइन की डेटाबेस संरचना या कॉन्फ़िगरेशन में असंगत बदलाव हो सकते हैं। इन बदलावों को सुचारु रूप से संभालने के लिए, NocoBase Migration तंत्र प्रदान करता है। यह तंत्र माइग्रेशन फ़ाइलें लिखकर इन बदलावों को प्रबंधित करता है। यह लेख आपको Migration के उपयोग के तरीके और विकास प्रक्रिया को व्यवस्थित रूप से समझने में मदद करेगा।
Migration एक स्क्रिप्ट है जो प्लगइन अपग्रेड के दौरान स्वचालित रूप से निष्पादित होती है, जिसका उपयोग निम्नलिखित समस्याओं को हल करने के लिए किया जाता है:
Migration के निष्पादन का समय तीन प्रकारों में विभाजित है:
| प्रकार | ट्रिगर होने का समय | निष्पादन परिदृश्य |
|---|---|---|
beforeLoad | सभी प्लगइन कॉन्फ़िगरेशन लोड होने से पहले | |
afterSync | संग्रह कॉन्फ़िगरेशन डेटाबेस के साथ सिंक्रनाइज़ होने के बाद (संग्रह संरचना पहले ही बदल चुकी है) | |
afterLoad | सभी प्लगइन कॉन्फ़िगरेशन लोड होने के बाद |
Migration फ़ाइलें प्लगइन डायरेक्टरी के अंतर्गत src/server/migrations/*.ts में रखी जानी चाहिए। NocoBase create-migration कमांड प्रदान करता है ताकि आप माइग्रेशन फ़ाइलों को तेज़ी से उत्पन्न कर सकें।
वैकल्पिक पैरामीटर
| पैरामीटर | विवरण |
|---|---|
--pkg <pkg> | प्लगइन पैकेज का नाम निर्दिष्ट करें |
--on [on] | निष्पादन का समय निर्दिष्ट करें, विकल्प: beforeLoad, afterSync, afterLoad |
उदाहरण
उत्पन्न की गई माइग्रेशन फ़ाइल का पाथ इस प्रकार है:
फ़ाइल की प्रारंभिक सामग्री:
⚠️
appVersionका उपयोग अपग्रेड के लिए लक्षित संस्करण की पहचान करने के लिए किया जाता है। निर्दिष्ट संस्करण से कम वाले वातावरण इस माइग्रेशन को निष्पादित करेंगे।
Migration फ़ाइलों में, आप डेटाबेस, प्लगइन और एप्लिकेशन इंस्टेंस को आसानी से संचालित करने के लिए this के माध्यम से निम्नलिखित सामान्य गुणों और API तक पहुँच सकते हैं:
सामान्य गुण
this.app
वर्तमान NocoBase एप्लिकेशन इंस्टेंस। इसका उपयोग वैश्विक सेवाओं, प्लगइन या कॉन्फ़िगरेशन तक पहुँचने के लिए किया जा सकता है।
this.db
डेटाबेस सेवा इंस्टेंस, जो मॉडल (संग्रह) पर संचालन के लिए इंटरफेस प्रदान करता है।
this.plugin
वर्तमान प्लगइन इंस्टेंस, जिसका उपयोग प्लगइन के कस्टम तरीकों तक पहुँचने के लिए किया जा सकता है।
this.sequelize
Sequelize इंस्टेंस, जो सीधे मूल SQL या लेनदेन संचालन को निष्पादित कर सकता है।
this.queryInterface
Sequelize का QueryInterface, जिसका उपयोग आमतौर पर तालिका संरचनाओं को संशोधित करने के लिए किया जाता है, जैसे कि फ़ील्ड जोड़ना, तालिकाएँ हटाना आदि।
Migration लिखने का उदाहरण
ऊपर सूचीबद्ध सामान्य गुणों के अलावा, Migration समृद्ध API भी प्रदान करता है। विस्तृत दस्तावेज़ के लिए, कृपया Migration API देखें।
Migration का निष्पादन nocobase upgrade कमांड द्वारा ट्रिगर किया जाता है:
अपग्रेड के दौरान, सिस्टम Migration के प्रकार और appVersion के आधार पर निष्पादन क्रम निर्धारित करेगा।
प्लगइन विकास में, यह सलाह दी जाती है कि आप Mock Server का उपयोग करके यह परीक्षण करें कि माइग्रेशन सही ढंग से निष्पादित होता है या नहीं, ताकि वास्तविक डेटा को नुकसान पहुँचाने से बचा जा सके।
टिप: Mock Server का उपयोग करके आप अपग्रेड परिदृश्यों का तेज़ी से अनुकरण कर सकते हैं और Migration के निष्पादन क्रम तथा डेटा में बदलावों को सत्यापित कर सकते हैं।
beforeLoad, afterSync या afterLoad चुनें, ताकि अनलोड किए गए मॉड्यूल पर निर्भरता से बचा जा सके।appVersion का उपयोग करके माइग्रेशन के लिए लागू संस्करण को स्पष्ट रूप से निर्दिष्ट करें, ताकि बार-बार निष्पादन को रोका जा सके।