How to use 'where' with AngularFire 7 new api?
Asked Answered
K

3

10

I upgraded AngularFire to 7, and have a problem with using .where with collectionReference. So simply.. how to use it properly?

I tried to use 'collection' from '@angular/fire/firestore' like:

const ref = collection(this.firestore, 'collectionName');

but the ref has not 'where' or something.

I know that '@angular/fire/firestore' has also 'query' and 'where', but I don't know how to use it.

How to find documents in the collection using 'where' with a new API?

Kincardine answered 20/11, 2021 at 10:33 Comment(0)
M
13

I managed to figure this one out...

for single where statement use

const refq = query(ref,where('dir','==','T'))

for multiple where statements use

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

const refq = query(ref,...wa)

to get the results use

collectionData(refq).subscribe()
Maltha answered 24/1, 2022 at 7:10 Comment(1)
@Yunnosch thaks, I edited the answer to make it more accurateMaltha
A
10

AngularFire 7.0 is based on the new tree-shakable Firebase JS SDK v9, so you should do as follows (untested):

const ref = collection(this.firestore, 'collectionName');
const q = query(ref, where("...", "==", "..."));

See the doc here (tab "Web version 9").

Almeta answered 20/11, 2021 at 11:14 Comment(0)
L
6

AngularFire has the Firebase JS SKD v9 syntax, using their own objects:

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

Lansquenet answered 22/1, 2022 at 11:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.