Мне было интересно, есть ли способ получить значения из одного документа без необходимости 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