Firestore извлекает значения из одного документа, но быстрее - PullRequest
0 голосов
/ 18 июня 2020

Мне было интересно, есть ли способ получить значения из одного документа без необходимости l oop через каждый документ, как функция поиска.

Я полагаю, как только база данных начнет разрастаться , постоянный цикл будет становиться все медленнее и медленнее.

export class ProfileComponent implements OnInit {

 // Variables //
 routeParams;
 userCollection: AngularFirestoreCollection<users>;
 user: any;
 profilePicture: any = "../../assets/default-icon.png" 

 constructor(
  private afStorage: AngularFireStorage,
  public afs: AngularFirestore, 
  public afAuth: AngularFireAuth, 
  public pickerCtrl: PickerController,
  public alertController: AlertController,
  private cd: ChangeDetectorRef,
  private route: ActivatedRoute,
  private router: Router,
 ) { }

 ngOnInit() {
    this.routeParams = this.route.params.subscribe(
       params => {
        /*Update Variables here*/
        this.userCollection = this.afs.collection("users");
        console.log("collection" + this.userCollection);
        this.user = this.userCollection.snapshotChanges().pipe(map(actions => {
          return actions.map(a => {

          const data = a.payload.doc.data() as users;
          const id = a.payload.doc.id;
          if (data.email == email.__email){
            this.profilePicture = data.photoURL;
            this.cd.detectChanges();
          }

          return { id, data};
        });
      }));
  });
 }
}

Выполнение snapshotChanges().pipe(map(actions => { return actions.map(a => { делает это l oop через все документы.

Я все равно получаю результаты с помощью If Check , но чем больше база данных, тем дольше это займет.

Интересно, могу ли я найти документ на основе email

...