首页 > 解决方案 > 有没有人做过一些事情来从 Angular 8 连接到多个 firebase 项目?

问题描述

我正在尝试从 Angular 8 连接到多个 Firebase 项目,我已经使用 @angular/fire 完成了它,但仅适用于 JIT 编译。

我不确定问题是否是因为我没有像文档中那样在主模块中初始化 firebase 应用程序,因为这只适用于连接到一个独特的项目。

所以,我为连接到多个项目所做的是使用依赖注入

做类似下面的代码的事情。

//app.module.ts setup firebase settings base on environments

import { AngularFirestore } from '@angular/fire/firestore';
import { AngularFireDatabase } from '@angular/fire/database';

export function AngularFirebaseInstance1(platformId: Object, zone: NgZone) {
  return new AngularFirestore(environment.firestoreInstance1, 'firebase-instance1', false, null, platformId, zone, null);
}

export function AngularFirebaseInstance2(platformId: Object, zone: NgZone) {
  return new AngularFireDatabase(environment.firestoreInstance2, 'firebase-instance2', null, platformId, zone);
}

providers: [
    {
      provide: 'firebaseInstance1',
      deps: [PLATFORM_ID, NgZone],
      useFactory: AngularFirebaseInstance1
    },
    {
      provide: 'firebaseInstance2',
      deps: [PLATFORM_ID, NgZone],
      useFactory: AngularFirebaseInstance2
    },
]
//firestore.service.ts service firestore instance1

import { AngularFirestore } from '@angular/fire/firestore';

export class FireStoreService1 {

  constructor(@Inject('firebaseInstance1') private afs: AngularFirestore) { }

  getLanguages(profile_id): Observable<any> {
    const ref = `users/${profile_id}/skills/languages`;
    return this.afs.doc(ref).valueChanges();
  }
}
// firebase.service.ts service firebase instance2

import { AngularFireDatabase } from '@angular/fire/database';

export class FireStoreService2 {

 constructor(@Inject('firebaseInstance2') private db: AngularFireDatabase) { }

 getLastNotifications(clientId: string, emailEncode: string): Observable<any> {
    const databaseRef = `${clientId}-${emailEncode}/notifications/`;
    return this.db.list(databaseRef, ref => ref.orderByChild('read').equalTo(false).limitToLast(3)).snapshotChanges();
  }
}

当我为生产(AOT 编译)构建时,我得到的是这个错误

标签: angularfirebasegoogle-cloud-firestore

解决方案


解决了只是导入

import 'firebase/auth';
import 'firebase/firestore';
import 'firebase/database';

在 app.module.ts


推荐阅读