AngularFirestore-动态更新查询

时间:2018-07-07 07:59:03

标签: javascript angular firebase google-cloud-firestore angularfire2

我有以下查询:

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()方法?

1 个答案:

答案 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();