Мой метод возвращает CollectionReference
.
Однако этот метод возвращал AngularFirestoreCollection<myObj>
до того, как я преобразовал его в Observable<myObj[]>
для работы с массивами.
humanCol : AngularFirestoreCollection<Human>;
humanObersArray: Observable<Human[]>;
constructor(private db: AngularFirestore) { }
До того, как я использовал этот способ. Работайте отлично, чтобы получить все данные.
buildHuman(): Observable<Human[]> {
this.humanCol = this.db.collection('path');
return this.humanObersArray = this.humanCol.valueChanges();
}
Теперь я использую необязательные параметры.
buildHuman(param1: string, param2?: string, param3?: string...){
this.db.collection('path', ref => {
let retVal = ref as any;
if (param1 != null) { retVal = retVal.where('param1', '==', param1) }
if (param2 != null) { retVal = retVal.where('param2', '==', param2) }
if (param3 != null) { retVal = retVal.where('param3', '==', param3) }
...
return retVal; //this return a CollectionReference
});
}
Как я могу конвертировать retVal
в AngularFirestoreCollection<T>
или Observable
?