8

the docs से:तार्किक या क्लाउड फायरस्टोर में यौगिक क्वेरी कैसे करें?

आप एक से अधिक जहां() तरीकों को और अधिक विशिष्ट प्रश्न (तार्किक और) बनाने के लिए श्रृंखला कर सकते हैं।

मैं OR क्वेरी कैसे कर सकता हूं? उदाहरण:

  1. मुझे सभी दस्तावेजों जहां क्षेत्र statusopen या upcoming
  2. मुझे सभी दस्तावेजों जहां क्षेत्र status == open या createdAt <= <somedatetime>

उत्तर

8

OR समर्थित नहीं है दे दो के रूप में यह मुश्किल है है दे दो इसे स्केल करने के लिए सर्वर (राज्य को समर्पित करने की आवश्यकता है)। चारों ओर काम 2 प्रश्न जारी करना है, प्रत्येक शर्त के लिए एक, और ग्राहक पर dedup।

+0

ठीक वही मैं अभी क्या कर रहा हूं। ठीक है धन्यवाद! – ProblemsOfSumit

+10

मैं उत्तर समझता हूं, लेकिन अगर मैं उन सभी दस्तावेजों को प्राप्त करना चाहता हूं जहां फ़ील्ड 'स्थिति' '' '' '' '' '' '' '' '' '' '' '(' 50 या कहें)। क्या मुझे 50 प्रश्न करने और उनसे जुड़ने की ज़रूरत है? यह सुपर इष्टतम दिखाई नहीं देता है? क्या मै गलत हु? क्या इस दृष्टिकोण के लिए कोई बेहतर तरीका है? धन्यवाद। – nerotulip

+0

@nerotulip इस पर कोई सफलता? – Babar

-1

आप आरएक्सजे मर्ज ऑपरेटर का उपयोग करके दो ऑब्जर्वेबल को बांध सकते हैं। यहां आपके पास एक उदाहरण है।

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

तो फिर तुम उपरोक्त विधि का उपयोग कर नए प्रत्यक्ष अपडेट के लिए सब्सक्राइब कर सकते हैं:

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

मैं चिली से उम्मीद है कि इस मदद कर सकता है, बधाई !!

संबंधित मुद्दे