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

为什么firestore不过滤并始终返回所有文档?

  •  0
  • Noober  · 技术社区  · 7 年前

    我有以下代码,它总是检索所有文档,就像没有应用过滤器一样。 使用angular@5.2.0和angularfire2@5.0.0-钢筋混凝土。6.

    loads$: Observable<Load[]>;
    status$: BehaviorSubject<string|null>;
    
    this.loads$ = this.status$.switchMap(status => 
        afs.collection<Load>('loads', ref => {
           let query : firebase.firestore.Query = ref;
           query.where('status', '==', status);
           return query;
        }).valueChanges());
    });
    

    数据库是这样设置的 https://i.imgur.com/kWd9GOj.png

    我通过以下方式更新可观察到的状态:

     filterByStatus(status: string) {
        this.status$.next(status); 
      }
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   Noober    7 年前

    我把这个代码放在订阅中。我所做的就是将它移到组件构造函数中,然后它开始工作。发现我可以使用combineLatest()来完成我想做的事情。

        2
  •  0
  •   Victor Dias    5 年前

    我遇到了同样的问题,通过更换线路来解决 query.where('status', '==', status); 通过 query = query.where('status', '==', status);