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 के साथ किया जा रहा है, तो पक्का करें कि आपने 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');