You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular+Firebase项目:同一Firebase项目内多Firestore数据库连接方法咨询

在同一Firebase项目中连接多个Firestore数据库(Angular + AngularFire)

前提

你已使用Blaze套餐创建Firebase项目,且AngularFire已正确集成到Angular项目中。


步骤1:在Firebase控制台创建额外Firestore数据库

  1. 打开Firebase控制台进入目标项目
  2. 导航到Firestore数据库页面
  3. 点击顶部的数据库选择下拉菜单(默认显示(default))
  4. 选择创建数据库,按提示设置数据库位置与初始安全规则

步骤2:配置AngularFire支持多数据库连接

在Angular配置文件(如app.config.ts或模块文件)中,为额外数据库提供独立实例:

import { provideFirebaseApp, initializeApp } from '@angular/fire/app';
import { provideFirestore, getFirestore, Firestore } from '@angular/fire/firestore';
import { environment } from '../environments/environment';

export const appConfig = {
  providers: [
    // 初始化Firebase应用
    provideFirebaseApp(() => initializeApp(environment.firebase)),
    // 默认Firestore数据库实例
    provideFirestore(() => getFirestore()),
    // 额外Firestore数据库实例(替换为你创建的数据库ID)
    {
      provide: 'SECONDARY_FIRESTORE',
      useFactory: () => {
        const app = initializeApp(environment.firebase);
        return getFirestore(app, 'secondary-db'); // "secondary-db"为控制台设置的数据库ID
      }
    }
  ]
};

步骤3:在组件中使用多Firestore实例

通过依赖注入获取默认与额外数据库实例,按常规方式操作数据:

import { Component, Inject } from '@angular/core';
import { Firestore, collectionData, collection } from '@angular/fire/firestore';
import { Observable } from 'rxjs';

// 定义数据模型
interface Item {
  name: string;
}

@Component({
  selector: 'app-root',
  template: `
    <h3>默认数据库数据</h3>
    <div *ngFor="let item of defaultItems$ | async">
      {{ item.name }}
    </div>

    <h3>第二个数据库数据</h3>
    <div *ngFor="let item of secondaryItems$ | async">
      {{ item.name }}
    </div>
  `
})
export class AppComponent {
  defaultItems$: Observable<Item[]>;
  secondaryItems$: Observable<Item[]>;

  constructor(
    // 注入默认Firestore实例
    private defaultFirestore: Firestore,
    // 注入额外Firestore实例
    @Inject('SECONDARY_FIRESTORE') private secondaryFirestore: Firestore
  ) {
    // 从默认数据库读取数据
    const defaultCol = collection(defaultFirestore, 'items');
    this.defaultItems$ = collectionData(defaultCol);

    // 从第二个数据库读取数据
    const secondaryCol = collection(secondaryFirestore, 'items');
    this.secondaryItems$ = collectionData(secondaryCol);
  }
}

注意事项

  • 每个Firestore数据库拥有独立安全规则,需在控制台分别配置
  • 代码中的数据库ID必须与控制台创建时的设置完全一致
  • Blaze套餐下多数据库会产生额外存储与读写费用,建议定期监控Firebase账单

内容的提问来源于stack exchange,提问作者Rafael Pereira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 11:31:14