Node.js SDK टूल एडमिन SDK v10 (मॉड्युलर SDK) पर अपग्रेड करें

Admin Node.js SDK टूल के वर्शन 10 में दो अहम बदलाव किए गए हैं:

  • Node.js 10 के लिए सहायता बंद कर दी गई है (यह बहुत बड़ा बदलाव है)
  • SDK टूल ने मॉड्यूलर एपीआई पैटर्न का इस्तेमाल किया है

इस गाइड में, मौजूदा Node.js ऐप्लिकेशन को एडमिन SDK के पुराने वर्शन से v10 में अपग्रेड करने में डेवलपर की मदद करने के लिए निर्देश और जानकारी दी गई है.

Node.js को वर्शन 12 या उसके बाद वाले वर्शन पर अपडेट करना

एडमिन Node.js SDK v10 रिलीज़ के साथ, Firebase ने Node.js 10 के लिए काम करना बंद कर दिया है. एडमिन SDK का इस्तेमाल करते समय, डेवलपर को Node.js 12 या उसके बाद के वर्शन का इस्तेमाल करना होगा. अगर 'Firebase के लिए Cloud Functions' के साथ एडमिन Node.js SDK टूल का इस्तेमाल किया जा रहा है, तो पक्का करें कि आपने Node.js वर्शन को 12 या उसके बाद के वर्शन पर अपग्रेड कर लिया है.

नेमस्पेस के बजाय मॉड्यूल का इस्तेमाल करना

शुरुआत से ही, Admin Node.js SDK टूल ने नेस्ट किए गए नेमस्पेस की हैरारकी के तौर पर, एक स्टेबल एपीआई बनाया है. इसलिए, हो सकता है कि आप कोड लिखने के बारे में जान गए हों, जो कुछ ऐसा दिखता हो:

// Import the global admin namespace
import * as admin from 'firebase-admin';

const app: admin.app.App = admin.initializeApp();

const token: string = await admin.auth().createCustomToken('alice');

const user: admin.auth.UserRecord = await admin.auth().getUser('bob');

v10 और उसके बाद के वर्शन में, Admin Node.js SDK टूल, नाम वाले एक्सपोर्ट के साथ कई मॉड्यूल एंट्री पॉइंट उपलब्ध कराता है. हमारा सुझाव है कि डेवलपर, ग्लोबल admin नेमस्पेस के बजाय, SDK टूल के अलग-अलग एपीआई ऐक्सेस करने के लिए, इन नए एंट्री पॉइंट का इस्तेमाल करें.

यहां बताया गया है कि नए मॉड्यूल के एंट्री पॉइंट के साथ ऊपर दिया गया उदाहरण कैसा दिखेगा:

TypeScript

// Import only what you need
import { initializeApp, App } from 'firebase-admin/app';
import { getAuth, UserRecord } from 'firebase-admin/auth';

const app: App = initializeApp();

const token: string = await getAuth().createCustomToken('alice');

const user: UserRecord = getAuth().getUser('bob');

Node.js के लिए

// Import only what you need
const { initializeApp } = require('firebase-admin/app');
const { getAuth } = require('firebase-admin/auth');

const app = initializeApp();

const token = await getAuth().createCustomToken('alice');

const user = getAuth().getUser('bob');

v10 मॉड्यूलर एंट्री पॉइंट का इस्तेमाल करना

ध्यान दें कि ऊपर दिए गए उदाहरणों में, ग्लोबल admin नेमस्पेस इंपोर्ट नहीं किया जा रहा है. इसके बजाय, कई मॉड्यूल एंट्री पॉइंट से सिर्फ़ सिंबल इंपोर्ट किए जा सकते हैं. इसके अलावा, TypeScript के डेवलपर को अब admin.auth.UserRecord और admin.database.Reference जैसे ट्रिपल-नेस्ट किए गए टाइप आइडेंटिफ़ायर का इस्तेमाल नहीं करना पड़ेगा. हर टाइप सिर्फ़ एक मॉड्यूल से जुड़ा है, इसलिए सिर्फ़ उन्हें UserRecord और Reference जैसे छोटे नाम से इंपोर्ट किया जा सकता है.

SDK टूल में v10 वर्शन के तौर पर उपलब्ध सभी मॉड्यूल एंट्री पॉइंट यहां दिए गए हैं:

  • Firebase एडमिन/ऐप्लिकेशन
  • Firebase-एडमिन/अनुमति
  • Firebase-एडमिन/डेटाबेस
  • Firebase-एडमिन/फ़ायरस्टोर
  • Firebase एडमिन/इंस्टेंस आईडी
  • Firebase-एडमिन/मशीन लर्निंग
  • Firebase एडमिन/मैसेज सेवा
  • Firebase एडमिन/प्रोजेक्ट मैनेजमेंट
  • Firebase-एडमिन/रिमोट-कॉन्फ़िगरेशन
  • Firebase एडमिन/सुरक्षा के नियम
  • Firebase-एडमिन/स्टोरेज

नीचे दी गई टेबल में, हर लेगसी नेमस्पेस फ़ंक्शन के लिए, इंपोर्ट सिंटैक्स दिखाया गया है:

वर्शन 9 वर्शन 10
admin.initializeApp() import { initializeApp } from 'firebase-admin/app'

initializeApp();

admin.app() import { getApp } from 'firebase-admin/ap'

getApp();

admin.credential.cert() import { cert } from 'firebase-admin/app'

cert();

admin.auth() import { getAuth } from 'firebase-admin/auth'

getAuth();

admin.database() import { getDatabase } from 'firebase-admin/database'

getDatabase();

admin.firestore() import { getFirestore } from 'firebase-admin/firestore'

getFirestore();

admin.instanceId() import { getInstanceId } from 'firebase-admin/instance-id'

getInstanceId();

admin.machineLearning() import { getMachineLearning } from 'firebase-admin/machine-learning'

getMachineLearning();

admin.messaging() import { getMessaging } from 'firebase-admin/messaging'

getMessaging()

admin.projectManagement() import { getProjectManagement } from 'firebase-admin/project-management'

getProjectManagement();

admin.remoteConfig() import { getRemoteConfig } from 'firebase-admin/remote-config'

getRemoteConfig();

admin.securityRules() import { getSecurityRules } from 'firebase-admin/security-rules'

getSecurityRules()

admin.storage() import { getStorage } from 'firebase-admin/storage'

getStorage();

ऐप्लिकेशन पर तरीकों के बजाय, एक्सपोर्ट किए गए फ़ंक्शन का इस्तेमाल करें

लेगसी एपीआई में, App ऑब्जेक्ट ने app.auth() और app.database() जैसे कई तरीके सार्वजनिक किए हैं. हमारा सुझाव है कि डेवलपर इन तरीकों का इस्तेमाल न करें. इसके बजाय, दिए गए App ऑब्जेक्ट के स्कोप वाले सर्विस इंस्टेंस पाने के लिए, ऊपर बताए गए मॉड्यूल एंट्री पॉइंट का इस्तेमाल करें. साथ ही, ऐप्लिकेशन से जुड़े अन्य काम करें.

वर्शन 9 वर्शन 10
app.auth() import { getAuth } from 'firebase-admin/auth';

getAuth(app);

app.database() import { getDatabase } from 'firebase-admin/database';

getDatabase(app);

app.database(url) import { getDatabaseWithUrl } from 'firebase-admin/database';

getDatabaseWithUrl(url, app);

app.firestore() import { getFirestore } from 'firebase-admin/firestore'

getFirestore(app);

app.instanceId() import { getInstanceId } from 'firebase-admin/instance-id'

getInstanceId(app);

app.machineLearning() import { getMachineLearning } from 'firebase-admin/machine-learning'

getMachineLearning(app);

app.messaging() import { getMessaging } from 'firebase-admin/messaging'

getMessaging(app);

app.projectManagement() import { getProjectManagement } from 'firebase-admin/project-management'

getProjectManagement(app);

app.remoteConfig() import { getRemoteConfig } from 'firebase-admin/remote-config'

getRemoteConfig(app);

app.securityRules() import { getSecurityRules } from 'firebase-admin/security-rules'

getSecurityRules(app);

app.storage() import { getStorage } from 'firebase-admin/storage'

getStorage(app);

app.delete() import { deleteApp } from 'firebase-admin/app';

deleteApp(app);

ES मॉड्यूल उपलब्ध हैं

Node.js 12 और उसके बाद के वर्शन, ES मॉड्यूल के लिए एक्सपेरिमेंट के तौर पर उपलब्ध हैं. इससे बिना टाइपस्क्रिप्ट वाले डेवलपर भी अपने कोड में export और import कीवर्ड इस्तेमाल कर सकते हैं. v10 रिलीज़ के बाद से, Admin Node.js SDK टूल, ES मॉड्यूल के लिए सहायता भी उपलब्ध कराता है. इससे सादे Node.js पर ES मॉड्यूल लागू करने वाले डेवलपर, import सिंटैक्स का इस्तेमाल करके SDK टूल इंपोर्ट कर सकते हैं.

'एडमिन SDK' के साथ ES मॉड्यूल का इस्तेमाल करने के लिए, सबसे पहले यह पक्का कर लें कि आपने अपने Node.js रनटाइम के लिए ESM की सुविधा चालू की है. आम तौर पर, अपनी package.json फ़ाइल में "type": "module" फ़ील्ड जोड़कर ऐसा किया जाता है. फिर आप ऐप्लिकेशन कोड लिख सकते हैं, जो ऐसा दिखता है:

// With {type: module} in the package.json...

// Import only what you need
import { initializeApp }  from 'firebase-admin/app';
import { getAuth } from 'firebase-admin/auth';

const app = initializeApp();

const token = await getAuth().createCustomToken('alice');

const user = getAuth().getUser('bob');