Répondre

8

OR est pas pris en charge comme il est difficile pour la serveur pour le mettre à l'échelle (nécessite de garder l'état pour le dédoublement). Le travail consiste à émettre 2 requêtes, une pour chaque condition, et déduplication sur le client.

+0

exactement ce que je fais en ce moment. D'accord merci! – ProblemsOfSumit

+10

Je comprends la réponse, mais si je veux obtenir tous les documents où le champ 'status' est' a' OR 'b' OU' c' OR '...' (disons 50 OU). Ai-je besoin d'effectuer 50 requêtes et de les joindre? Cela ne semble pas super-optimal? Ai-je tort? Y a-t-il une meilleure façon d'aborder cela? THX. – nerotulip

+0

@nerotulip un succès à ce sujet? – Babar

-1

Vous pouvez lier deux observables à l'aide de l'opérateur de fusion rxjs. Ici vous avez un exemple.

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/merge'; 

... 

getCombinatedStatus(): Observable<any> { 
    return Observable.merge(this.db.collection('foo', ref => ref.where('status','==','open')).valueChanges(), 
          this.db.collection('foo', ref => ref.where('status','==','upcoming')).valueChanges()); 
} 

Ensuite, vous pouvez vous abonner aux nouvelles mises à jour Observable en utilisant la méthode ci-dessus:

getCombinatedStatus.subscribe(results => console.log(results); 

J'espère que cela peut vous aider, salutations du Chili !!