代码之家  ›  专栏  ›  技术社区  ›  TheUnreal

AngularFireStore-动态更新查询

  •  0
  • TheUnreal  · 技术社区  · 8 年前

    我有以下疑问:

    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变量并将其传递给 collect() 角火法2?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Frank van Puffelen    8 年前

    每次你打电话给 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();