poimsm2
poimsm2

Reputation: 562

Object as a query parameter in Firestore

Is it possible to pass a javascript object as a "where query" in Firestore? The traditional way to do a query is like this:

this.db.collection('riders', ref => 
  ref.where('vehicle', '==', 'bicycle')
     .where('activity', '==', 'available')
     .where('isActive', '==', true)
 .valueChanges().subscribe();

But I would like to use an object like this:

query = {
   vehicle: 'bicycle',
   activity: 'available',
   isActive: true
}

I'm using AngularFire2

Upvotes: 2

Views: 174

Answers (2)

Muhammed Albarmavi
Muhammed Albarmavi

Reputation: 24414

Try this way

query = {
   vehicle: 'bicycle',
   activity: 'available',
   isActive: true
}

this.db.list(`riders`, {
    query: {
    ...query
   }
});

Upvotes: 0

Frank van Puffelen
Frank van Puffelen

Reputation: 598728

This should do the trick:

conditions = {
   vehicle: 'bicycle',
   activity: 'available',
   isActive: true
}
let query = ref;
Object.keys(conditions).forEach((key) => {
    query = query.where(key, "==", conditions[key]);
})

this.db.collection('riders', ref => query)
 .valueChanges().subscribe();

Upvotes: 1

Related Questions