我有以下查询:
loadData(settings: any): Observable<any[]> {
const ref = this.db.collection('data').ref
.orderBy('simpleID', 'desc')
.where('isVerified', '==', true)
.limit(5);
// Gender filter
if (settings.includeMales && !settings.includeFemales) {
ref.where('gender', '==', 'm');
} else if (!settings.includeMales && settings.includeFemales) {
ref.where('gender', '==', 'f');
}
return this.db.collection('confessions', ref => ref)
.valueChanges();
我想基于settings
对象动态应用过滤器。
如何使用ref变量并将其传递给Angularfire2的collect()
方法?
答案 0 :(得分:1)
每次调用where()
或其他方法时,它实际上都会返回一个新查询。因此,您只需要确保捕获每个呼叫的查询即可。
var query = this.db.collection('data').ref
.orderBy('simpleID', 'desc')
.where('isVerified', '==', true)
.limit(5);
if (settings.includeMales && !settings.includeFemales) {
query = query.where('gender', '==', 'm');
} else if (!settings.includeMales && settings.includeFemales) {
query = query.where('gender', '==', 'f');
}
return this.db.collection('confessions', ref => query).valueChanges();