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 के वर्शन 10 के रिलीज़ होने के बाद, Firebase ने Node.js 10 के लिए सहायता बंद कर दी है. Admin SDK का इस्तेमाल करते समय, डेवलपर को Node.js 12 या इससे नए वर्शन का इस्तेमाल करना होगा.Admin SDK अगर Admin Node.js SDK का इस्तेमाल, Cloud Functions for Firebase, Cloud Functions for Firebase के साथ किया जा रहा है, तो पक्का करें कि आपने 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');

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

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

ध्यान दें कि ऊपर दिए गए उदाहरणों में, अब ग्लोबल 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

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

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

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