1

我正在使用 Firestore,我需要过滤我的数据publicado并按fechaCreacion. 然后我尝试了这个:this.afs.collection ('avisos', ref => ref.where ('publicado', '==', true) .orderBy ('fechaCreacion', 'desc')).valueChanges()

但根据文档,Firestore 不允许这样做。然后我被单独留下了订单:this.afs.collection ('avisos', ref => ref.orderBy('fechaCreacion', 'desc')). valueChanges()我试图用它*ngIf来只显示那些publicado = true

<div *ngFor="let aviso of avisos | async as aviso" class="col-xl-2 col-lg-3 col-md-4 col-sm-6 col-6 my-1 px-1">
  <div *ngIf="aviso.publicado">
    <h6>{{ aviso.titulo }}</h6>
    <p>{{ aviso.descripcion }}</p>
  </div>
</div>

在某种程度上,我解决了这个问题,但我还有这些差距。我该如何解决? 在此处输入图像描述

4

1 回答 1

3

在你的打字稿中过滤你的数据,如下所示:

this.avisos = this.afs
    .collection('avisos', ref => ref.orderBy('fechaCreacion', 'desc'))
    .valueChanges()
    .map(data => data.filter(d => d.publicado));

或在您的查询中通过 Firestore 过滤(首选方式):

this.avisos = this.afs
    .collection('avisos', ref => ref
       .orderBy('fechaCreacion', 'desc'))
       .where('publicado', '==', true)
    .valueChanges();

重要的是先订购,然后过滤。

于 2018-05-23T15:15:06.577 回答