firebase - दस्तावेजों की गैर-मौजूदा कुंजियों के लिए क्लाउड फायरस्टार को क्वेरी कैसे करें



google-cloud-firestore (1)

दस्तावेज़ में एक null मान डेटा प्रकार ( डेटा प्रकार दस्तावेज़ देखें) के साथ गुण हो सकते हैं। यह तब आपको परिणामों को सीमित करने के लिए एक क्वेरी बनाने की अनुमति देगा जहां website संपत्ति null

यह एक लापता संपत्ति के रूप में काफी समान नहीं है, लेकिन यदि आप फायरस्टार को डेटा लिखने के लिए कस्टम ऑब्जेक्ट का उपयोग करते हैं , तो खाली गुण स्वचालित रूप से सभी के बजाय null रूप में सहेजे जाएंगे। आप मैन्युअल रूप से / प्रोग्रामेटिक रूप से डेटाबेस के लिए एक null मान लिख सकते हैं।

Android में, मैंने निम्नलिखित का उपयोग करके यह परीक्षण किया:

FirebaseFirestore.getInstance().collection("test").whereEqualTo("website", null).get();

जहाँ मेरा डेटाबेस संरचना जैसा दिखता था:

यह केवल दस्तावेज़ inuwlZOvZNTHuBakS6GV , क्योंकि दस्तावेज़ 9Hf7uwORiiToOKz6zcsX में website संपत्ति में एक स्ट्रिंग मान है।

मेरा मानना ​​है कि आप आमतौर पर स्विफ्ट में विकसित होते हैं, जहां दुर्भाग्य से कस्टम ऑब्जेक्ट का समर्थन नहीं किया जाता है, लेकिन आप NSNull() को एक null मान लिखने के लिए NSNull() का उपयोग कर सकते हैं। उदाहरण के लिए (मैं स्विफ्ट में कुशल नहीं हूं, इसलिए किसी भी मुद्दे को सुधारने के लिए स्वतंत्र महसूस करता हूं):

// Writing data
let docData: [String: Any] = [
    "firstname": "Example",
    "lastname": "User",
    "website": NSNull()
]
db.collection("data").document("one").setData(docData) { err in
    if let err = err {
        print("Error writing document: \(err)")
    } else {
        print("Document successfully written!")
    }
}

// Querying for null values
let query = db.collection("test").whereField("website", isEqualTo: NSNull())

दस्तावेज़ में उन मूल्यों के लिए क्वेरी करने की विधि का उल्लेख नहीं है जो मौजूद नहीं हैं, इसलिए यह अगले सर्वोत्तम दृष्टिकोण की तरह लगता है। यदि कोई विकल्प में सुधार या सुझाव दे सकता है, तो कृपया करें।

मान लीजिए कि मेरे पास कुछ वैकल्पिक गुणों वाला एक डेटा मॉडल है। यह उदाहरण के लिए एक "firstname", "lastname" और एक वैकल्पिक "वेबसाइट" संपत्ति के साथ एक उपयोगकर्ता ऑब्जेक्ट हो सकता है।

क्लाउड फायरस्टोर में केवल एक ज्ञात वेबसाइट वाले उपयोगकर्ता दस्तावेजों में "वेबसाइट" संपत्ति सेट होगी, अन्य सभी उपयोगकर्ता दस्तावेजों के लिए यह संपत्ति मौजूद नहीं होगी।

मेरे सवाल अब "वेबसाइट" संपत्ति के बिना सभी उपयोगकर्ता दस्तावेजों के लिए क्वेरी कैसे करें।

धन्यवाद।





google-cloud-firestore