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

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

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

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

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

Admin Node.js SDK टूल के वर्शन 10 के रिलीज़ होने के बाद, Firebase ने Node.js 10 के साथ काम करना बंद कर दिया है. Admin SDK का इस्तेमाल करते समय, डेवलपर को Node.js 12 या इसके बाद के वर्शन का इस्तेमाल करना होगा. अगर Cloud Functions for Firebase के साथ एडमिन 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 टूल, नाम वाले एक्सपोर्ट के साथ कई मॉड्यूल एंट्री पॉइंट उपलब्ध कराता है. हमारा सुझाव है कि डेवलपर, SDK टूल के अलग-अलग एपीआई को ऐक्सेस करने के लिए, इन नए एंट्री पॉइंट का इस्तेमाल करें. इसके बजाय, वे ग्लोबल admin नेमस्पेस का इस्तेमाल न करें.

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

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 जैसे छोटे नामों से इंपोर्ट किया जा सकता है.

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

  • firebase-admin/app
  • firebase-admin/auth
  • firebase-admin/database
  • firebase-admin/firestore
  • firebase-admin/instance-id
  • firebase-admin/machine-learning
  • firebase-admin/messaging
  • firebase-admin/project-management
  • firebase-admin/remote-config
  • firebase-admin/security-rules
  • firebase-admin/storage

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

v9 v10
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 ऑब्जेक्ट के दायरे में आने वाले सेवा इंस्टेंस हासिल किए जा सकते हैं. साथ ही, ऐप्लिकेशन से जुड़े अन्य टास्क भी पूरे किए जा सकते हैं.

v9 v10
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 मॉड्यूल के लिए एक्सपेरिमेंटल सपोर्ट उपलब्ध है. इससे, TypeScript का इस्तेमाल न करने वाले डेवलपर भी अपने कोड में export और import कीवर्ड का इस्तेमाल कर सकते हैं. v10 रिलीज़ से, Admin Node.js SDK में भी ES मॉड्यूल का इस्तेमाल किया जा सकता है. इससे, सामान्य Node.js पर ES मॉड्यूल लागू करने वाले डेवलपर, import सिंटैक्स का इस्तेमाल करके SDK टूल इंपोर्ट कर सकते हैं.

Admin 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');