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

एक वैश्विक चर में, नेवला में कॉलबैक पुनर्प्राप्त करने के लिए कैसे सेट करें

अतुल्यकालिकता के बारे में सुपर क्लासिक शुरुआती गलती :)

क्या हो रहा है :

var name; // FIRST you declare the name variable

schema.findone({name : 'Bob'} , function(er , db){ // SECOND you launch a request to the DB
  name = db; // FOURTH name is populated.
  console.log(db);
});

console.log(name); // !! THIRD !! you log name - it's empty

आपको क्या करना चाहिए :

schema.findone({name : 'Bob'} , function(er , db){
  doSomethingElse(db);
});

function doSomethingElse(name){
    console.log(name); // It's defined.
}

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

संपादित करें :चूंकि आप किसी कारण से पूरी तरह से वैश्विक चर चाहते हैं, तो ऐसा करें:

var name;

schema.findone({name : 'Bob'} , function(er , db){
  name = db;
  console.log(name); // works fine
  doSomethingElse();
});

console.log(name); // name is empty here, because the DB request is still in progress at this stage

function doSomethingElse(){
    console.log(name); // Tadaaaa! It's a global variable and is defined!
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी जावा - नेस्टेड ऐरे को धक्का दे रहा है?

  2. पायमोंगो कुल निष्पादन कैसे प्राप्त करेंस्टेट्स

  3. ऑब्जेक्ट पैरेंट बनाएं जिसने नेवले में बच्चों को नेस्ट किया

  4. MongoDB php ड्राइवर XAMPP OS X पर अपाचे को विफल करने का कारण बनता है

  5. MongoDB 4.2 डेटा बेस से डुप्लिकेट निकालें