MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

अवैध ब्रेक स्टेटमेंट (Node.js)

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

var cb = function(err, data){
    if (data.id){
        uniqueNumber++;
    }
    else {
        saveLandmark(newUnique);
        break;  // not inside a loop!
    }
};

db.collection('landmarks').findOne({'id':uniqueIDer}, function(err, data){
    //if ID exists already
    if (data.id){
        var uniqueNumber = 1;
        while (1) {
            var uniqueNum_string = uniqueNumber.toString(); 
            var newUnique = data.id + uniqueNum_string;
            db.collection('landmarks').findOne({'id':newUnique}, cb);
        }
    }
    else {
        saveLandmark(uniqueIDer);
    }
});

अब यह बिल्कुल स्पष्ट है कि break कॉलबैक फ़ंक्शन में बॉडी लूप के अंदर नहीं है! मैंने चीजों को अन्य तरीकों से भी तोड़ दिया है क्योंकि uniqueNumber और newUnique मान अब दायरे में नहीं हैं, लेकिन यह एक अलग मुद्दा है। :) यहां देखने वाली महत्वपूर्ण बात यह है कि एक फ़ंक्शन आपके कोड में एक "हार्ड" सीमा पेश करता है जिसे पूरी तरह से भाषा के सिंटैक्स के आधार पर देखना मुश्किल हो सकता है। यह एक कारण है कि प्रोग्रामिंग की यह कॉलबैक शैली सही होने के लिए इतनी मुश्किल क्यों हो सकती है।

वास्तव में, कोड पर आपके मूल प्रयास की तुलना में ऐसा करना कहीं अधिक कठिन है। जब आप बार-बार findOne को कॉल करते हैं, तो आपको कॉलबैक की संभावित मनमानी परतों के माध्यम से सफलता संकेत पास करने का एक तरीका होना चाहिए और परिणाम का विश्लेषण करें (एसिंक्रोनस रूप से)।

उत्कृष्ट async . का उपयोग करके आपको इसमें कुछ सहायता मिल सकती है पुस्तकालय, उदाहरण के लिए https://github.com/caolan/async#whilst




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. db.collection.count() MongoDB में शार्प किए गए संग्रह के लिए बहुत अधिक दस्तावेज़ लौटाता है

  2. मोंगो डीबी एकत्रीकरण सरणी आकार मैच से बड़ा है

  3. फ़ीचर समर्थित नहीं:$text दस्तावेज़ db में mongodb 3.6 संगतता के साथ

  4. एक मोंगोडब प्रतिकृति सेट को विषम संख्या में मतदान नोड्स की आवश्यकता क्यों होती है?

  5. एक मोंगोडब समूह/मानचित्र कमांड में समूह का कुल प्रतिशत निर्धारित करें