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'
|
admin.app()
|
import { getApp } from 'firebase-admin/ap'
|
admin.credential.cert()
|
import { cert } from 'firebase-admin/app'
|
admin.auth()
|
import { getAuth } from 'firebase-admin/auth'
|
admin.database()
|
import { getDatabase } from 'firebase-admin/database'
|
admin.firestore()
|
import { getFirestore } from 'firebase-admin/firestore'
|
admin.instanceId()
|
import { getInstanceId } from 'firebase-admin/instance-id'
|
admin.machineLearning()
|
import { getMachineLearning } from 'firebase-admin/machine-learning'
|
admin.messaging()
|
import { getMessaging } from 'firebase-admin/messaging'
|
admin.projectManagement()
|
import { getProjectManagement } from 'firebase-admin/project-management'
|
admin.remoteConfig()
|
import { getRemoteConfig } from 'firebase-admin/remote-config'
|
admin.securityRules()
|
import { getSecurityRules } from 'firebase-admin/security-rules'
|
admin.storage()
|
import { getStorage } from 'firebase-admin/storage'
|
ऐप्लिकेशन पर, तरीकों के बजाय एक्सपोर्ट किए गए फ़ंक्शन इस्तेमाल करना
लेगसी एपीआई में, App
ऑब्जेक्ट ने कई तरीके दिखाए थे, जैसे कि
app.auth()
और app.database()
. हमारा सुझाव है कि डेवलपर इन तरीकों का इस्तेमाल न करें. इसके बजाय, ऊपर बताए गए मॉड्यूल एंट्री पॉइंट का इस्तेमाल करें. इससे, किसी दिए गए App
ऑब्जेक्ट के दायरे में आने वाले सेवा इंस्टेंस हासिल किए जा सकते हैं. साथ ही, ऐप्लिकेशन से जुड़े अन्य टास्क भी पूरे किए जा सकते हैं.
वर्शन 9 | वर्शन 10 |
---|---|
app.auth()
|
import { getAuth } from 'firebase-admin/auth';
|
app.database()
|
import { getDatabase } from 'firebase-admin/database';
|
app.database(url)
|
import { getDatabaseWithUrl } from 'firebase-admin/database';
|
app.firestore()
|
import { getFirestore } from 'firebase-admin/firestore'
|
app.instanceId()
|
import { getInstanceId } from 'firebase-admin/instance-id'
|
app.machineLearning()
|
import { getMachineLearning } from 'firebase-admin/machine-learning'
|
app.messaging()
|
import { getMessaging } from 'firebase-admin/messaging'
|
app.projectManagement()
|
import { getProjectManagement } from 'firebase-admin/project-management'
|
app.remoteConfig()
|
import { getRemoteConfig } from 'firebase-admin/remote-config'
|
app.securityRules()
|
import { getSecurityRules } from 'firebase-admin/security-rules'
|
app.storage()
|
import { getStorage } from 'firebase-admin/storage'
|
app.delete()
|
import { deleteApp } from 'firebase-admin/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');