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 टूल, नाम वाले एक्सपोर्ट के साथ कई मॉड्यूल एंट्री पॉइंट उपलब्ध कराता है. हमारा सुझाव है कि डेवलपर, ग्लोबल 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 जैसे छोटे नामों से इंपोर्ट किया जा सकता है.

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

  • firebase-admin/app
  • firebase-admin/auth
  • firebase-admin/database
  • Firebase-एडमिन/फ़ायरस्टोर
  • Firebase एडमिन/इंस्टेंस आईडी
  • Firebase-एडमिन/मशीन लर्निंग
  • firebase-admin/messaging
  • Firebase एडमिन/प्रोजेक्ट मैनेजमेंट
  • Firebase-एडमिन/रिमोट-कॉन्फ़िगरेशन
  • firebase-admin/security-rules
  • firebase-admin/storage

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

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

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

Admin SDK के साथ ES मॉड्यूल का इस्तेमाल करने से पहले, यह पक्का कर लें कि आपने Node.js रनटाइम के लिए ईएसएम की सुविधा चालू की है. आम तौर पर, ऐसा करने के लिए 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');