本技能是一份 Firebase 平台集成指南,整合 AngularFire SDK 与 Firebase Data Connect(GraphQL + PostgreSQL)的参考模式,面向在 Angular 项目中使用 Firebase 的开发者。
一、用途 作为 Firebase 服务集成的统一参考,帮助开发者按既定模式接入 AngularFire SDK 与 Firebase Data Connect,并遵循安全与性能约定。
二、主要能力
- AngularFire 核心(SDK)
- 实时数据库与 Firestore:采用响应式模式,使用 collectionData、docData,并通过 toSignal() 转换为信号。
- 依赖注入:使用 inject(Firestore)、inject(Auth) 等方式获取实例。
- 安全:安全规则是主要防线,绝不信任客户端。
- 认证:在 AuthStore 中跟踪用户状态;使用函数式 canActivate 守卫配合 Auth 服务。
- Firebase Data Connect(GQL + PostgreSQL)
- Schema 工作流:Schema 优先,在 schema.gql 中定义 @table;schema 变更后运行 firebase dataconnect:sdk:generate 生成 SDK;使用生成的 SDK 严格类型,绝不编辑 dataconnect-generated/ 目录。
- 指令规则:@table 为所有数据库实体必需;@auth 为所有类型必需(不允许公开访问);@default 用于 UUID(uuidV4())与时间戳(request.time);@col(name: "...") 在 JSON 键与数据库列名不同时进行映射。
-
与 NgRx Signals 集成 提供查询封装示例:通过 signalStore 与 withMethods 定义 store,使用 rxMethod 与 switchMap 调用 DataConnectService 的查询,并在 tapResponse 中通过 patchState 更新状态、记录错误。
-
安全与性能
- 密钥:Firebase API 密钥与配置存放于 environment.ts。
- 查询设计:在 GraphQL 中只获取所需字段。
- 认证模式:@auth(rules: [{ allow: OWNER, ownerField: "userId" }])。
- 禁止硬编码密钥:密钥必须保留在环境变量或 GCP Secret Manager 中。
- 强制规则:任何 schema 变更后,必须先重新生成 SDK,再编辑应用逻辑。
三、使用方式 按上述模式在 Angular 项目中接入 AngularFire 与 Data Connect;schema 变更后执行 firebase dataconnect:sdk:generate;通过 inject 获取服务实例,使用生成的 SDK 进行类型安全查询,并在 NgRx Signals store 中封装查询逻辑。
四、适用场景 适用于使用 Angular 与 Firebase 的项目,尤其是需要 Firestore 实时数据、Firebase Authentication、Cloud Functions,以及采用 GraphQL + PostgreSQL 的 Data Connect 数据层的应用。
五、限制 资料未提供具体版本要求、平台兼容性、收费或价格信息、性能基准与效果数据,暂未提供。