【问题标题】:*ngIf Firestore with Querying Collections / angularfire2*ngIf Firestore 与查询集合 / angularfire2
【发布时间】:2018-05-23 15:10:50
【问题描述】:

我正在使用 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>

部分地,我解决了这个问题,但我还有这些差距。我该如何解决?

【问题讨论】:

    标签: angular firebase google-cloud-firestore angularfire2


    【解决方案1】:

    像这样在你的打字稿中过滤你的数据:

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

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

    【讨论】:

    • 第二个对我有用。我应该提一下,以前我必须在 firestore 控制台中创建一个复合索引。
    猜你喜欢
    • 1970-01-01
    • 2018-07-26
    • 2018-07-07
    • 2018-06-27
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多