मैंने फ़्लटर में एक ऐप बनाया और मैं पुराने दस्तावेज़ों को हटाने और नए जोड़ने के लिए फायरबेस में डेटा रीफ्रेश करने का प्रयास करता हूं। 100 दस्तावेज़ (संपूर्ण संग्रह) को एक-एक करके हटाने में मुझे लगभग 19.158398 सेकंड लगते हैं और 100 दस्तावेज़ जोड़ने में 17.511311 लगते हैं। जब मैं रीफ्रेश करता हूं तो पूरे संग्रह को हटाने और इसे नए दस्तावेज़ों के साथ फिर से बनाने की आवश्यकता होती है। इस तरह मैं संग्रह के सभी दस्तावेज़ों को हटाता हूँ:

  QuerySnapshot qs = await Firestore.instance
    .collection('DOCUMENTS')
    .where('WS', isEqualTo: '${globals.qSN}')
    .limit(2)
    .getDocuments();
if (qs.documents.length > 0) {
  await Firestore.instance
      .collection('DOCUMENTS')
      .getDocuments()
      .then((snapshot) async{

    for (DocumentSnapshot doc in snapshot.documents) {
       await doc.reference.delete();
    }
  });
}

और इस तरह मैं दस्तावेज़ जोड़ता हूं:

for(var obj in object.data){

   await Firestore.instance
        .collection('DOCUMENTS')
        .add({
      'MT': '${obj.mt}',
      'CODE': '${obj.code}',
      'NAME': '${obj.name}',});}

क्या आप मुझे इस बारे में कोई राय दे सकते हैं कि इसे तेजी से कैसे किया जाए? 36 सेकंड प्रतीक्षा करना थोड़ा अधिक है (मेरी राय में)। मैंने पिछले दो हफ्तों में अपने दम पर एक विकल्प खोजने की कोशिश की, लेकिन मुझे कोई परिणाम नहीं मिला।

0
OpTiM B 16 अप्रैल 2020, 18:24

1 उत्तर

सबसे बढ़िया उत्तर

क्लाइंट ऐप से दस्तावेज़ों को हटाने में तेजी लाने का कोई तरीका नहीं है। आप जो कर रहे हैं वह क्लाइंट के नजरिए से उतनी ही तेजी से हो रहा है। समय शायद आपके और आपके डेटाबेस को होस्ट करने वाले सर्वर के बीच विलंबता और सीमित बैंडविड्थ के कारण है।

इसके बजाय एक सर्वर पर कुछ बैकएंड कोड लिखने पर विचार करें जो भौतिक रूप से उस क्षेत्र के करीब स्थित है जहां डेटा संग्रहीत है। आप एक क्लाउड फ़ंक्शंस HTTP ट्रिगर लिखकर ऐसा कर सकते हैं जिसे आपका क्लाइंट कोड कॉल कर सकता है। ट्रिगर को उसी Google क्लाउड क्षेत्र में तैनात करना सुनिश्चित करें, जिस पर आपका फायरस्टोर इंस्टेंस है।

3
Doug Stevenson 16 अप्रैल 2020, 15:35