首页 > 解决方案 > 过滤来自 AngularFire2 实时数据库查询的结果

问题描述

我正在尝试过滤从 AngularFire2 实时数据库查询返回的可观察列表,但过滤器似乎不适用,我得到了返回的整个列表。

我无法在网上找到太多信息,因为它似乎与使用 .pipe 之前的旧版本或新的 firestore 数据库有关。

getPosts(limit) {
    return this.db.list('/reasons', ref => ref.orderByKey().limitToLast(limit)).snapshotChanges().pipe( map( (data: any[] ) => {
      return data.map( post => {
        const $key = post.payload.key;
        const item = { $key, ...post.payload.val() };
        return item;
      })
      .filter(post => post.flag !== true || post.privacy !== true )
    }))
  }

更新:

我已经让过滤工作了,但我不确定它是使用 rxjs 6 的正确方法。

我希望有人可以检查结构,而不是仅仅将其发布为答案,因为我不确定它是否真的应该是公认的答案。它显然不遵循下面建议的管道结构( map(), map(), filter() )

getPosts(limit) {
    return this.db.list('/reasons', ref => ref.orderByKey().limitToLast(limit)).snapshotChanges().pipe( 
      map( (data: any[] ) => {
        return data.map( data => {
          const $key = data.payload.key;
          const item = { $key, ...data.payload.val() };
          return item;
        }).filter(data => data.flag !== true).filter(data => data.privacy !== true)
      })
    );
  }

标签: angularionic-frameworkfirebase-realtime-databaseangularfire2

解决方案


推荐阅读