如何在 AngularFire 7 新 api 中使用“where”?

Prz*_*emo 10 javascript firebase google-cloud-platform angularfire2 google-cloud-firestore

我将 AngularFire 升级到 7,并且在使用 .where 和 collectionReference 时遇到问题。那么简单..如何正确使用它?

我尝试使用“@angular/fire/firestore”中的“集合”,例如:

const ref = collection(this.firestore, 'collectionName');
Run Code Online (Sandbox Code Playgroud)

但裁判没有说“哪里”之类的。

我知道“@angular/fire/firestore”也有“query”和“where”,但我不知道如何使用它。

如何使用新 API 的“where”在集合中查找文档?

dsl*_*400 13

我设法解决了这个问题...

对于单个 where 语句使用

const refq = query(ref,where('dir','==','T'))
Run Code Online (Sandbox Code Playgroud)

对于多个 where 语句使用

const wa:QueryConstraint[] = [where('dir','==','T'),where('day','==',23)]

const refq = query(ref,...wa)
Run Code Online (Sandbox Code Playgroud)

得到结果使用

collectionData(refq).subscribe()
Run Code Online (Sandbox Code Playgroud)


Ren*_*nec 10

AngularFire 7.0 基于新的可摇树的 Firebase JS SDK v9,因此您应该执行以下操作(未经测试):

const ref = collection(this.firestore, 'collectionName');
const q = query(ref, where("...", "==", "..."));
Run Code Online (Sandbox Code Playgroud)

请参阅此处的文档(选项卡“Web 版本 9”)。


小智 6

AngularFire 具有 Firebase JS SKD v9 语法,使用自己的对象:

import {collection, collectionData, Firestore, query, where} from '@angular/fire/firestore';

export class FooClass {

  constructor(private firestore: Firestore){
    const ref = collection(firestore, 'collectionName');
    const q = query(ref, where('ids', 'array-contains', id));
    const res$ = collectionData(q);
  }

Run Code Online (Sandbox Code Playgroud)