ডাটা কানেক্টের সাথে অ্যাডমিন SDK ব্যবহার করুন, ডাটা কানেক্টের সাথে অ্যাডমিন SDK ব্যবহার করুন

Firebase Admin SDK হল সার্ভার লাইব্রেরির একটি সেট যা আপনাকে বিশেষ সুবিধাপ্রাপ্ত পরিবেশ থেকে ফায়ারবেসের সাথে ইন্টারঅ্যাক্ট করতে দেয় যাতে বাল্ক ডেটা ম্যানেজমেন্টের জন্য Firebase Data Connect পরিষেবাতে কোয়েরি এবং মিউটেশন সম্পাদন করা যায় এবং উন্নত সুবিধা এবং ছদ্মবেশী শংসাপত্র সহ অন্যান্য ক্রিয়াকলাপ করা যায়।

Admin SDK আপনাকে পঠন/লেখা এবং পঠন-শুধুমাত্র উভয় মোডে অপারেশন কল করার জন্য একটি API প্রদান করে। পঠন-শুধুমাত্র অপারেশনের মাধ্যমে, আপনি এমন প্রশাসনিক ফাংশন বাস্তবায়নের মানসিক শান্তি পাবেন যা আপনার ডাটাবেসে ডেটা পরিবর্তন করতে পারে না।

অ্যাডমিন SDK সেটআপ

আপনার সার্ভারে With Firebase Data Connect ব্যবহার শুরু করতে, আপনাকে প্রথমে Node.js এর জন্য Admin SDK ইনস্টল এবং সেট আপ করতে হবে।

আপনার স্ক্রিপ্টগুলিতে অ্যাডমিন SDK আরম্ভ করুন

SDK আরম্ভ করতে, Data Connect এক্সটেনশনগুলি আমদানি করুন এবং আপনার প্রকল্প পরিষেবা আইডি এবং অবস্থান ঘোষণা করুন।


import { initializeApp } from 'firebase-admin/app';
import { getDataConnect } from 'firebase-admin/data-connect';

// If you'd like to use OAuth2 flows and other credentials to log in,
// visit https://firebase.google.com/docs/admin/setup#initialize-sdk
// for alternative ways to initialize the SDK.

const app = initializeApp();

const dataConnect = getDataConnect({
    serviceId: 'serviceId',
    location: 'us-west2'
});

Admin SDK সাথে ব্যবহারের জন্য ডিজাইন কোয়েরি এবং মিউটেশন

নিম্নলিখিত বিবেচনাগুলি বিবেচনা করে, Admin SDK Data Connect অপারেশন পরীক্ষা করার জন্য কার্যকর।

SDK এবং @auth(level: NO_ACCESS) অপারেশন নির্দেশিকাটি বুঝুন

যেহেতু Admin SDK বিশেষাধিকার সহ কাজ করে, তাই এটি @auth নির্দেশিকা ব্যবহার করে সেট করা অ্যাক্সেস লেভেল নির্বিশেষে আপনার যেকোনো প্রশ্ন এবং মিউটেশন কার্যকর করতে পারে, যার মধ্যে NO_ACCESS লেভেলও অন্তর্ভুক্ত।

যদি আপনার ক্লায়েন্ট অপারেশনের পাশাপাশি, আপনি আপনার অ্যাডমিনিস্ট্রেটিভ কোয়েরি এবং মিউটেশনগুলিকে .gql সোর্স ফাইলে অ্যাডমিনিস্ট্রেটিভ স্ক্রিপ্টে ইম্পোর্ট করার জন্য সংগঠিত করেন, তাহলে Firebase আপনাকে কোনও অনুমোদন অ্যাক্সেস লেভেল ছাড়াই অ্যাডমিনিস্ট্রেটিভ অপারেশনগুলিকে চিহ্নিত করার পরামর্শ দেয়, অথবা সম্ভবত আরও স্পষ্ট করে NO_ACCESS হিসাবে সেট করে। যেভাবেই হোক, এটি ক্লায়েন্টদের কাছ থেকে বা অন্যান্য অ-সুবিধাপ্রাপ্ত প্রেক্ষাপটে এই ধরনের অপারেশনগুলিকে কার্যকর করা থেকে বিরত রাখে।

Data Connect এমুলেটরের সাথে SDK ব্যবহার করুন

প্রোটোটাইপ এবং পরীক্ষার পরিবেশে, স্থানীয় ডেটাতে ডেটা সিডিং এবং অন্যান্য ক্রিয়াকলাপ সম্পাদন করা কার্যকর হতে পারে। Admin SDK আপনাকে আপনার কর্মপ্রবাহকে সহজ করতে দেয় কারণ এটি স্থানীয় প্রবাহের জন্য প্রমাণীকরণ এবং অনুমোদন উপেক্ষা করে।

DATA_CONNECT_EMULATOR_HOST এনভায়রনমেন্ট ভেরিয়েবল সেট করা হলে Firebase অ্যাডমিন SDK গুলি স্বয়ংক্রিয়ভাবে Data Connect এমুলেটরের সাথে সংযুক্ত হয়:

export DATA_CONNECT_EMULATOR_HOST="127.0.0.1:9399"

আরও তথ্যের জন্য, দেখুন:

সাধারণ ব্যবহারের ক্ষেত্রে বাস্তবায়ন করুন

আপনার গুরুত্বপূর্ণ ডেটার উপর বিশেষাধিকারপ্রাপ্ত ক্রিয়াকলাপের জন্য Admin SDK প্রদান করা হয়।

অ্যাডমিন SDK দুটি ইন্টারফেস প্রদান করে:

  • বেশিরভাগ পঠন-লেখা বা পঠন-অনলি ক্রিয়াকলাপের জন্য একটি সাধারণ ইন্টারফেস, যেখানে আপনার কোড কোয়েরি এবং মিউটেশন বাস্তবায়ন করে এবং সেগুলি পঠন-লেখা executeGraphql পদ্ধতি বা পঠন-অনলি executeGraphqlRead পদ্ধতিতে প্রেরণ করে।
  • বাল্ক ডেটা অপারেশনের জন্য একটি বিশেষ ইন্টারফেস, যা জেনেরিক executeGraphql পদ্ধতির পরিবর্তে, মিউটেশন অপারেশনের জন্য নিবেদিতপ্রাণ পদ্ধতিগুলি প্রকাশ করে: insert , insertMany , upsert , এবং upsertMany

executeGraphql পদ্ধতি ব্যবহার করে ব্যবহারকারীর ডেটা পরিচালনা করুন

Admin SDK এর একটি সাধারণ ব্যবহারের ক্ষেত্রে ব্যবহারকারীর ডেটা পরিচালনা করা হয়।

প্রশাসনিক শংসাপত্র ব্যবহার করুন

সবচেয়ে সহজ পদ্ধতি হল প্রশাসনিক শংসাপত্র ব্যবহার করে ব্যবহারকারীর ডেটা অ্যাক্সেস করা।

// User can be publicly accessible, or restricted to admins
const query = "query getProfile(id: AuthID) { user(id: $id) { id name } }";

interface UserData {
  user: {
    id: string;
    name: string;
  };
}

export interface UserVariables {
  id: string;
}

const options:GraphqlOptions<UserVariables> = { variables: { id: "QVBJcy5ndXJ1" } };

// executeGraphql
const gqlResponse = await dataConnect.executeGraphql<UserData, UserVariables>(query, options);

// executeGraphqlRead (similar to previous sample but only for read operations)
const gqlResponse = await dataConnect.executeGraphqlRead<UserData, UserVariables>(query, options);

// gqlResponse -> { "data": { "user": { "id": "QVBJcy5ndXJ1", "name": "Fred" } } }

ব্যবহারকারীর শংসাপত্রের ছদ্মবেশ ধারণ করুন

এমন কিছু ব্যবহারের ক্ষেত্রেও আছে যেখানে আপনি চান যে আপনার স্ক্রিপ্টগুলি নির্দিষ্ট ব্যবহারকারীর পক্ষে সীমিত শংসাপত্রের ভিত্তিতে ব্যবহারকারীর ডেটা পরিবর্তন করুক। এই পদ্ধতিটি সর্বনিম্ন সুবিধার নীতিকে সম্মান করে।

এই ইন্টারফেসটি ব্যবহার করার জন্য, একটি কাস্টমাইজড JWT প্রমাণীকরণ টোকেন থেকে তথ্য সংগ্রহ করুন যা Authentication টোকেন ফর্ম্যাট অনুসরণ করে। এছাড়াও কাস্টম টোকেন গাইড দেখুন।

// Get the current user's data
const queryGetUserImpersonation = `
    query getUser @auth(level: USER) {
        user(key: {uid_expr: "auth.uid"}) {
            id,
            name
        }
    }`;

// Impersonate a user with the specified auth claims
const optionsAuthenticated: GraphqlOptions<undefined> = {
    impersonate: {
        authClaims: {
            sub: 'QVBJcy5ndXJ1'
        }
    }
};

// executeGraphql with impersonated authenticated user scope
const gqlResponse = await dataConnect.executeGraphql<UserData, undefined>(queryGetUserImpersonation, optionsAuthenticated);

// gqlResponse -> { "data": { "user": { "id": "QVBJcy5ndXJ1", "name": "Fred" } } }

executeGraphql পদ্ধতি ব্যবহার করে পাবলিক ডেটা পরিচালনা করুন

আপনি SDK ব্যবহার করে সর্বজনীনভাবে অ্যাক্সেসযোগ্য ডেটা নিয়ে কাজ করতে পারেন, একজন অননুমোদিত ব্যবহারকারীর ছদ্মবেশ ধারণ করে।

// Query to get posts, with authentication level PUBLIC
const queryGetPostsImpersonation = `
    query getPosts @auth(level: PUBLIC) {
        posts {
          description
        }
    }`;

// Attempt to access data as an unauthenticated user
const optionsUnauthenticated: GraphqlOptions<undefined> = {
    impersonate: {
        unauthenticated: true
    }
};

// executeGraphql with impersonated unauthenticated user scope
const gqlResponse = await dataConnect.executeGraphql<UserData, undefined>(queryGetPostsImpersonation, optionsUnauthenticated);

বাল্ক ডেটা অপারেশন সম্পাদন করুন

ফায়ারবেস আপনাকে প্রোডাকশন ডাটাবেসে বাল্ক ডেটা অপারেশনের জন্য Admin SDK ব্যবহার করার পরামর্শ দেয়।

SDK বাল্ক ডেটা নিয়ে কাজ করার জন্য নিম্নলিখিত পদ্ধতিগুলি প্রদান করে। প্রদত্ত আর্গুমেন্ট থেকে, প্রতিটি পদ্ধতি একটি GraphQL মিউটেশন তৈরি করে এবং কার্যকর করে।


// Methods of the bulk operations API
// dc is a Data Connect admin instance from getDataConnect

const resp = await dc.insert("movie" /*table name*/, data[0]);
const resp = await dc.insertMany("movie" /*table name*/, data);
const resp = await dc.upsert("movie" /*table name*/, data[0]);
const resp = await dc.upsertMany("movie" /*table name*/, data);

বাল্ক অপারেশনের জন্য পারফরম্যান্স নোট

ব্যাকএন্ডে প্রতিটি অনুরোধের জন্য ক্লাউড SQL-এ একবার করে যেতে হবে, তাই আপনি যত বেশি ব্যাচ করবেন, থ্রুপুট তত বেশি হবে।

তবে, ব্যাচের আকার যত বড় হবে, জেনারেট করা SQL স্টেটমেন্ট তত লম্বা হবে। PostgreSQL SQL স্টেটমেন্টের দৈর্ঘ্যের সীমায় পৌঁছে গেলে, আপনি একটি ত্রুটির সম্মুখীন হবেন।

বাস্তবে, আপনার কাজের চাপের জন্য উপযুক্ত ব্যাচের আকার খুঁজে বের করার জন্য পরীক্ষা করুন।

এরপর কী?