AngularFirestore - 动态更新查询
AngularFirestore - Update query dynamically
我有以下查询:
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()
方法?
每次调用 where()
或其他方法时,它实际上 returns 一个新查询。所以你只需要确保捕获每个调用的查询。
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();
我有以下查询:
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()
方法?
每次调用 where()
或其他方法时,它实际上 returns 一个新查询。所以你只需要确保捕获每个调用的查询。
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();