Node.js SDK অ্যাডমিন SDK v10 (মডুলার SDK) এ আপগ্রেড করুন

অ্যাডমিন নোড.জেএস এসডিকে-এর ভার্সন ১০-এ দুটি গুরুত্বপূর্ণ পরিবর্তন আনা হয়েছে:

  • Node.js 10-এর জন্য সমর্থন বন্ধ করে দেওয়া হয়েছে (এটি একটি বড় ধরনের পরিবর্তন )।
  • এসডিকে একটি মডিউলার এপিআই প্যাটার্ন গ্রহণ করেছে।

এই নির্দেশিকাটি ডেভেলপারদের বিদ্যমান Node.js অ্যাপগুলিকে Admin SDK এর পূর্ববর্তী সংস্করণ থেকে v10-এ আপগ্রেড করতে সাহায্য করার জন্য নির্দেশনা ও তথ্য প্রদান করে।

Node.js v12 বা উচ্চতর সংস্করণে আপডেট করুন।

অ্যাডমিন নোড.জেএস এসডিকে ভি১০ প্রকাশের সাথে সাথে, ফায়ারবেস নোড.জেএস ১০-এর জন্য সমর্থন বন্ধ করে দিয়েছে। Admin SDK ব্যবহার করার সময় ডেভেলপারদের অবশ্যই নোড.জেএস ১২ বা তার উচ্চতর সংস্করণ ব্যবহার করতে হবে। আপনি যদি Cloud Functions for Firebase এর সাথে অ্যাডমিন নোড.জেএস এসডিকে ব্যবহার করেন, তবে নিশ্চিত করুন যে আপনি আপনার নোড.জেএস সংস্করণটি ১২ বা তার উচ্চতর সংস্করণে আপগ্রেড করেছেন।

নেমস্পেসের পরিবর্তে মডিউল ব্যবহার করুন

শুরু থেকেই, অ্যাডমিন নোড.জেএস এসডিকে একটি নেস্টেড নেমস্পেস হায়ারার্কি হিসেবে গঠিত স্থিতিশীল এপিআই প্রদান করে আসছে। ফলে, আপনি হয়তো এই ধরনের কোড লিখতে অভ্যস্ত হয়ে গেছেন:

// 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 থেকে শুরু করে, অ্যাডমিন Node.js SDK-তে নেমড এক্সপোর্ট সহ একাধিক মডিউল এন্ট্রি পয়েন্ট রয়েছে। আমরা ডেভেলপারদের গ্লোবাল admin নেমস্পেস ব্যবহার করার পরিবর্তে, SDK-এর বিভিন্ন API অ্যাক্সেস করার জন্য এই নতুন এন্ট্রি পয়েন্টগুলো ব্যবহার করার পরামর্শ দিই।

নতুন মডিউল এন্ট্রি পয়েন্টগুলো যোগ করলে উপরের উদাহরণটি দেখতে এইরকম হবে:

টাইপস্ক্রিপ্ট

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

নোড.জেএস

// 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 নেমস্পেস ইম্পোর্ট করছেন না। এর পরিবর্তে, আপনি বিভিন্ন মডিউল এন্ট্রি পয়েন্ট থেকে শুধুমাত্র আপনার প্রয়োজনীয় সিম্বলগুলো স্পষ্টভাবে ইম্পোর্ট করছেন। এছাড়াও, টাইপস্ক্রিপ্ট ডেভেলপারদের আর admin.auth.UserRecord এবং admin.database.Reference এর মতো ট্রিপল-নেস্টেড টাইপ আইডেন্টিফায়ার ব্যবহার করতে হবে না। যেহেতু প্রতিটি টাইপ ঠিক একটি মডিউলের অন্তর্গত, তাই আপনি UserRecord এবং Reference মতো তাদের সংক্ষিপ্ত নাম দিয়েই ইম্পোর্ট করতে পারেন।

v10 সংস্করণ অনুযায়ী SDK-তে উপলব্ধ সমস্ত মডিউল এন্ট্রি পয়েন্টগুলো নিচে দেওয়া হলো:

  • firebase-admin/app
  • ফায়ারবেস-অ্যাডমিন/অথ
  • ফায়ারবেস-অ্যাডমিন/ডাটাবেস
  • ফায়ারবেস-অ্যাডমিন/ফায়ারস্টোর
  • ফায়ারবেস-অ্যাডমিন/ইনস্ট্যান্স-আইডি
  • ফায়ারবেস-অ্যাডমিন/মেশিন-লার্নিং
  • firebase-admin/messaging
  • ফায়ারবেস-অ্যাডমিন/প্রজেক্ট-ম্যানেজমেন্ট
  • ফায়ারবেস-অ্যাডমিন/রিমোট-কনফিগ
  • ফায়ারবেস-অ্যাডমিন/নিরাপত্তা-নিয়মাবলী
  • ফায়ারবেস-অ্যাডমিন/স্টোরেজ

নিম্নলিখিত সারণিতে প্রতিটি লিগ্যাসি নেমস্পেস ফাংশনের প্রতিস্থাপন ইম্পোর্ট সিনট্যাক্স দেখানো হলো:

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 কীওয়ার্ড ব্যবহার করার সুযোগ দেয়। v10 রিলিজ থেকে, অ্যাডমিন Node.js SDK-ও ES মডিউল সাপোর্ট প্রদান করে, ফলে সাধারণ Node.js-এ ES মডিউল ইমপ্লিমেন্ট করা ডেভেলপাররা import সিনট্যাক্স ব্যবহার করে SDK-টি ইম্পোর্ট করতে পারেন।

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