5

मैं फायरस्टोर से शुरू कर रहा हूं। मैंने ऑफलाइन डेटा दृढ़ता के बारे में दस्तावेज़ और ट्यूटोरियल पढ़े हैं, लेकिन अगर सामग्री को संशोधित नहीं किया गया है तो भी फायरस्टोर डेटा फिर से डाउनलोड करता है, तो मुझे वास्तव में स्पष्ट नहीं किया गया है। उदाहरण के लिए, यदि मेरे पास कोई प्रश्न है जहां परिणाम सप्ताह में एक बार अपडेट किए जाएंगे और मुझे यह आवश्यक नहीं है कि ऐप सामग्री को तब तक डाउनलोड करे जब तक परिवर्तन नहीं किए जाते, कोड लिखने में दक्षता के मामले में सबसे अच्छा तरीका क्या है ? धन्यवाद!फायरस्टोर - ऑनलाइन सामग्री अपडेट तक कैश का उपयोग

उत्तर

0

आप अपनी क्वेरी को सुनने के लिए "स्नैपशॉट श्रोता" एपीआई का उपयोग करना चाहते हैं:

db.collection("cities").where("state", "==", "CA") 
    .onSnapshot(function(querySnapshot) { 
     var cities = []; 
     querySnapshot.forEach(function(doc) { 
      cities.push(doc.data().name); 
     }); 
     console.log("Current cities in CA: ", cities.join(", ")); 
    }); 

पहली बार ऐसा श्रोता देते Firestore का उपयोग करेंगे: https://firebase.google.com/docs/firestore/query-data/listen#listen_to_multiple_documents_in_a_collection

यहाँ एक उदाहरण के रूप में कुछ जावास्क्रिप्ट है नेटवर्क को आपकी क्वेरी में सभी परिणामों को डाउनलोड करने और आपको एक क्वेरी स्नैपशॉट प्रदान करने के लिए, जैसा कि आप उम्मीद करेंगे।

यदि आप एक ही श्रोता को दूसरी बार संलग्न करते हैं और आप ऑफलाइन दृढ़ता का उपयोग कर रहे हैं, तो श्रोता को कैश के परिणामों के साथ तुरंत निकाल दिया जाएगा। यहाँ आप कैसे पता लगा सकते हैं कि यदि आपके परिणाम कैश या स्थानीय से है:

db.collection("cities").where("state", "==", "CA") 
    .onSnapshot({ includeQueryMetadataChanges: true }, function(snapshot) { 
     snapshot.docChanges.forEach(function(change) { 
      if (change.type === "added") { 
       console.log("New city: ", change.doc.data()); 
      } 

      var source = snapshot.metadata.fromCache ? "local cache" : "server"; 
      console.log("Data came from " + source); 
     }); 
    }); 

आप कैश्ड परिणाम प्राप्त करने के बाद, इस firestore अगर आपकी क्वेरी के परिणाम में कोई परिवर्तन कर रहे हैं देखने के लिए सर्वर के साथ की जाँच करेगा। यदि हां, तो आपको बदलावों के साथ एक और स्नैपशॉट मिलेगा।

आप परिवर्तन है कि केवल मेटाडाटा शामिल हैं (उदाहरण के लिए अगर कोई दस्तावेज snapshot.metadata.fromCache परिवर्तन बदल सकता है लेकिन) की सूचना प्राप्त करना आप QueryListenOptions उपयोग कर सकते हैं जब आपकी क्वेरी जारी करने चाहते हैं: https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QueryListenOptions

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