import { AngularFirestore, AngularFirestoreCollection } from '@angular/fire/firestore';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
constructor(private firestore: AngularFirestore) {}
getFilteredData(): Observable {
const collection: AngularFirestoreCollection = this.firestore.collection('collectionName', ref => ref.where('field', '==', 'condition'));
return collection.snapshotChanges().pipe(
map(actions => {
return actions.map(a => {
const data = a.payload.doc.data();
const id = a.payload.doc.id;
return { id, ...data };
});
})
);
}
在上面的代码中,我们首先导入AngularFirestore和AngularFirestoreCollection服务,并在构造函数中注入AngularFirestore。
然后,我们使用collection()方法来获取Firestore集合的引用,并传递一个回调函数给它。在回调函数中,我们使用where()方法来设置筛选条件。在这个例子中,我们筛选出字段值等于'condition'的文档。
接下来,我们将snapshotChanges()方法应用于集合引用,并使用pipe()方法将其转换为可观察对象。
在pipe()方法中,我们使用map()操作符来处理每个文档的快照。在这个例子中,我们通过使用map()操作符来遍历每个快照,并返回一个包含文档ID和数据的新对象。
最后,我们返回过滤后的文档集合作为Observables。