2017-11-12 44 views
9

के बराबर नहीं है, मैं केवल फायरस्टोर संग्रह से चुनना चाहता हूं जो मेरे द्वारा लिखे गए लेख नहीं हैं।
क्या यह वास्तव में इतना कठिन है?फायरस्टोर: असमानता के साथ कोई क्वेरी कैसे करें/

प्रत्येक आलेख में "owner_uid" फ़ील्ड है।

यह Thats:
मैं बस के लिए "select * from articles where uid<>request.auth.uid"

उत्तर

7

Firestore बराबर लिखने के लिए असमानता के चेक प्रदान नहीं करता है चाहता हूँ। documentation के अनुसार:

जहां() विधि तीन पैरामीटर लेती है: फ़िल्टर करने के लिए एक फ़ील्ड, एक तुलना ऑपरेशन और एक मान। तुलना <, < =, ==,>, या> = हो सकती है।

असमानता संचालन index का उपयोग करने वाले अन्य संचालनों की तरह स्केल नहीं करते हैं। फायरस्टोर इंडेक्स रेंज पूछताछ के लिए अच्छे हैं। असमानता क्वेरी के लिए इस प्रकार की अनुक्रमणिका के साथ, परिणामों के साथ आने के लिए बैकएंड को संग्रह में प्रत्येक दस्तावेज़ को स्कैन करना होगा, और दस्तावेज़ों की संख्या बड़ी होने पर प्रदर्शन के लिए यह बेहद खराब है।

यदि आपको विशेष वस्तुओं को हटाने के लिए अपने परिणामों को फ़िल्टर करने की आवश्यकता है, तो भी आप स्थानीय रूप से ऐसा कर सकते हैं।

आपके पास एक अलग मूल्य को बाहर करने के लिए एकाधिक प्रश्नों का उपयोग करने का विकल्प भी है। ऐसा कुछ, यदि आप 12 को छोड़कर सबकुछ चाहते हैं। मूल्य < 12 के लिए क्वेरी, फिर मान> 12 के लिए क्वेरी करें, फिर क्लाइंट में परिणामों को मर्ज करें।

+2

स्थानीय रूप से लेकिन कैसे? यदि संग्रह "लेख" में मेरे द्वारा पढ़े गए 10 हजार लेख हैं, तो इसका मतलब है कि मुझे इस संग्रह को अनगिनत लेखों तक पहुंचने से पहले पागलपन पागल राशि के साथ पूछना होगा। – android51130

+1


उदाहरण के लिए, केवल लेख प्राप्त करने के लिए कैसे मैं पहले से पढ़ा नहीं है?
मेरे उपयोगकर्ता में readed_article_ids को संग्रहीत करना फायरस्टोर दस्तावेज़ मेरे उपयोगकर्ता दस्तावेज़ को बढ़ाएगा और प्रत्येक फायरस्टोर दस्तावेज़ की सीमा 1 एमबी होगी - कुछ दिन readed_article_ids मेरे उपयोगकर्ता दस्तावेज़ में फायरस्टोर ऐरे इस सीमा से अधिक हो जाएगा।
तो उलझन: ((( – android51130

+0

अभी आप allright) डेटा मॉडलिंग, कि एक अलग सवाल की तरह लगता है के बारे में अधिक विशिष्ट प्रश्न –

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