I would like to query the items collection by filtering out only documents that have a certain ID.
import { Firestore, collectionData, collection } from '@angular/fire/firestore';
import { Observable } from 'rxjs';
interface Item {
name: string,
...
};
@Component({
selector: 'app-root',
template: `
<ul>
<li *ngFor="let item of item$ | async">
{{ item.name }}
</li>
</ul>
`
})
export class AppComponent {
item$: Observable<Item[]>;
constructor(firestore: Firestore) {
const collection = collection(firestore, 'items');
this.item$ = collectionData(collection);
}
}
I manage to query by following the following steps
// Import statement
import { Firestore, collectionData, collection,where,query } from '@angular/fire/firestore';
// Please define an Observable like below
Items: Observable<Item[]>; // Item being a model
// inside your function
const appRef = collection(this.firestore, 'items')
const appQuery = query(appRef, where('uid', '==', userId));
this.Items= (await collectionData(appQuery)).pipe(
map((actions) => {
return actions.map((a) => {
const data = a as Item;
const uid = a.id;
return { uid, ...data };
});
})
);