Firebase Admin SDK 是一组服务器库,让您可以从特权环境与 Firebase 进行交互,以执行以下操作:对 Firebase Data Connect 服务执行查询和更改,以便使用提升的权限进行批量数据管理和其他操作。
Admin SDK 为您提供了一个 API,可用于在读写模式和只读模式下调用操作。借助只读操作,您可以放心地实现无法修改数据库中数据的管理功能。
Admin SDK 设置
如需在服务器上将 Firebase Data Connect 与 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
。无论是哪种方式,这都会阻止从客户端或其他非特权上下文执行此类操作。
将 SDK 与 Data Connect 模拟器搭配使用
在原型和测试环境中,对本地数据执行数据种子和其他操作会很有用。Admin SDK 会忽略本地流程的身份验证和授权,因此可简化工作流。
设置 DATA_CONNECT_EMULATOR_HOST
环境变量后,Firebase Admin SDK 会自动连接到 Data Connect 模拟器:
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" } } }
后续步骤
- 查看 Admin SDK 的 API。
- 您可以使用 Firebase CLI 和 Google Cloud 控制台执行其他项目管理操作,例如管理架构和连接器以及管理服务和数据库。