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

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

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

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

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

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

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

शुरुआत से ही, एडमिन 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');

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

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

  • 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 कीवर्ड का इस्तेमाल कर सकते हैं. Admin Node.js SDK के v10 वर्शन से, 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');