1

I'm trying to connect to multiple Firebase projects from Angular 8, I already accomplished it using @angular/fire but only works for JIT compilation.

I'm not sure if the problem is because I'm not initializing the firebase app in the main module as in the documentation because this only works for connecting to one unique project.

So, what I did to connect to multiple project is use dependency injection

doing something like the code below.

//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();
  }
}

What I'm getting when I'm building for production (AOT compilation) is this error

1 Answers1

1

Solved just importing

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

in the app.module.ts