Firebase Admin SDK مجموعهای از کتابخانههای سرور است که به شما امکان میدهد از محیطهای دارای امتیاز با Firebase تعامل داشته باشید تا اقداماتی مانند انجام پرس و جوها و جهشها در سرویس Firebase Data Connect برای مدیریت دادههای انبوه و سایر عملیات با امتیازات بالا و اعتبار جعل هویت انجام دهید.
Admin SDK یک API برای فراخوانی عملیات در هر دو حالت خواندن/نوشتن و فقط خواندنی در اختیار شما قرار می دهد. با عملیات فقط خواندنی، خیال شما را از اجرای توابع مدیریتی که نمیتوانند دادهها را در پایگاه دادههای شما تغییر دهند، دارید.
راه اندازی SDK مدیریت
برای شروع استفاده از با Firebase Data Connect در سرور خود، ابتدا باید Admin SDK برای Node.js نصب و راهاندازی کنید .
Admin 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
تنظیم کنید. در هر صورت، این امر از اجرای چنین عملیاتی از سوی کلاینت ها یا در زمینه های غیرمجاز دیگر جلوگیری می کند.
از SDK با شبیه ساز Data Connect استفاده کنید
در محیطهای نمونه اولیه و آزمایش، انجام بذر دادهها و سایر عملیات روی دادههای محلی میتواند مفید باشد. Admin SDK به شما امکان می دهد گردش کار خود را ساده کنید زیرا احراز هویت و مجوز برای جریان های محلی را نادیده می گیرد.
هنگامی که متغیر محیطی DATA_CONNECT_EMULATOR_HOST
تنظیم شده باشد، Firebase Admin SDK به طور خودکار به شبیه ساز Data Connect متصل می شود:
export DATA_CONNECT_EMULATOR_HOST="127.0.0.1:9399"
برای اطلاعات بیشتر رجوع کنید به:
موارد استفاده رایج را اجرا کنید
Admin SDK برای عملیات ممتاز روی داده های حیاتی شما ارائه شده است.
Admin 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);
انجام عملیات داده انبوه
Firebase توصیه می کند که از 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);
یادداشت های عملکرد برای عملیات انبوه
هر درخواست به باطن یک سفر رفت و برگشت به Cloud SQL را متحمل می شود، بنابراین هرچه تعداد بیشتری را دسته بندی کنید، توان عملیاتی بالاتری دارد.
با این حال، هر چه اندازه دسته بزرگتر باشد، دستور SQL تولید شده طولانی تر است. وقتی به محدودیت طول بیانیه PostgreSQL SQL رسید، با خطا مواجه خواهید شد.
در عمل، برای یافتن اندازه دسته ای مناسب برای حجم کاری خود، آزمایش کنید.
بعدش چی؟
- با استفاده از Admin SDK در مورد کاشت پایگاه داده خود با داده ها بیاموزید
- API را برای Admin SDK مرور کنید.
- از Firebase CLI و کنسول Google Cloud برای سایر عملیات مدیریت پروژه، مانند مدیریت طرحوارهها و رابطها و مدیریت سرویسها و پایگاههای داده استفاده کنید.