Data Connect で Admin SDK を使用する

Firebase Admin SDK は、Google Cloud SDK とやり取りするためのサーバー ライブラリのセットです。 特権環境から Firebase を使用して、クエリの実行などのアクションを実行する 一括データ マネジメント用の Firebase Data Connect サービスでのミューテーションとミューテーション 昇格された権限を持つその他のオペレーションを実行できます。

Admin SDK には、読み取り / 書き込みモードと読み取り専用モードの両方でオペレーションを呼び出す API が用意されています。読み取り専用オペレーションでは、 データを変更できない管理機能を実装できるという安心感 おすすめします

Admin SDK の設定

サーバーで Firebase Data Connect を使用するには、まず Node.js 用に Admin SDK をインストールして設定する必要があります。

スクリプトで Admin SDK を初期化する

SDK を初期化するには、Data Connect 拡張機能をインポートし、プロジェクト サービス ID とロケーションを宣言します。


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 を使用すると、ローカルフローでの認証と承認を無視できるため、ワークフローを簡素化できます。

Firebase Admin SDK は、自動的に Data Connect に接続します。 DATA_CONNECT_EMULATOR_HOST 環境変数が設定されている場合:

export DATA_CONNECT_EMULATOR_HOST="127.0.0.1:8080"

詳しくは以下をご覧ください。

一般的なユースケースの実装

Admin SDK は、重要なデータに対する特権操作のために提供されます。

Data Connect の API は、読み取り / 書き込みの executeGraphql で構成されます。 インターフェースと読み取り専用の executeGraphqlRead インターフェースがあります。

ユーザーデータを管理する

Admin SDK の一般的なユースケースは、ユーザーデータの管理です。

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

export interface UserVariables {
  id: string;
}

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

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

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

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

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

次のステップ