在 AngularFirestoreCollection<T> 或 Observable 中转换 CollectionReference?
Convert CollectionReference in AngularFirestoreCollection<T> or Observable?
我的正在returnCollectionReference
。
但是,在我将其转换为 Observable<myObj[]>
以处理数组之前,此方法用于 return a AngularFirestoreCollection<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
?
你的函数 buildHuman
没有 return 任何东西。只需 return this.db.collection
电话,您就会收到 AngularFirestoreCollection
。或者像以前一样添加调用 valueChanges
以获得 observable
:
buildHuman(param1: string, param2?: string, param3?: string): AngularFirestoreCollection<any> {
return this.afs.collection('users', 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', '==', param2); }
return retVal;
});
}
或
buildHuman(param1: string, param2?: string, param3?: string): Observable<any> {
return this.afs.collection('users', 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', '==', param2); }
return retVal;
})
.valueChanges();
}
我的CollectionReference
。
但是,在我将其转换为 Observable<myObj[]>
以处理数组之前,此方法用于 return a AngularFirestoreCollection<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
?
你的函数 buildHuman
没有 return 任何东西。只需 return this.db.collection
电话,您就会收到 AngularFirestoreCollection
。或者像以前一样添加调用 valueChanges
以获得 observable
:
buildHuman(param1: string, param2?: string, param3?: string): AngularFirestoreCollection<any> {
return this.afs.collection('users', 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', '==', param2); }
return retVal;
});
}
或
buildHuman(param1: string, param2?: string, param3?: string): Observable<any> {
return this.afs.collection('users', 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', '==', param2); }
return retVal;
})
.valueChanges();
}