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

एक्सप्रेस नेवला Model.find() रिटर्न अपरिभाषित

यह सही दिखता है, लेकिन आप जावास्क्रिप्ट के एसिंक्रोनस व्यवहार के बारे में भूल रहे हैं :)। जब आप इसे कोड करते हैं:

module.exports.getAllTasks = function(){
        Task.find().lean().exec(function (err, docs) {
        console.log(docs); // returns json
    });
}

आप json प्रतिक्रिया देख सकते हैं क्योंकि आप console.log . का उपयोग कर रहे हैं कॉलबैक के अंदर निर्देश (अज्ञात फ़ंक्शन जिसे आप .exec () में पास करते हैं) हालांकि, जब आप टाइप करते हैं:

app.get('/get-all-tasks',function(req,res){
    res.setHeader('Content-Type', 'application/json');
    console.log(Task.getAllTasks()); //<-- You won't see any data returned
    res.json({msg:"Hej, this is a test"}); // returns object
});

Console.log निष्पादित करेगा getAllTasks() फ़ंक्शन जो कुछ भी नहीं लौटाता (अपरिभाषित) क्योंकि वह चीज़ जो वास्तव में वह डेटा लौटाती है जो आप चाहते हैं वह कॉलबैक के अंदर है...

तो, इसे काम करने के लिए, आपको कुछ इस तरह की आवश्यकता होगी:

module.exports.getAllTasks = function(callback){ // we will pass a function :)
        Task.find().lean().exec(function (err, docs) {
        console.log(docs); // returns json
        callback(docs); // <-- call the function passed as parameter
    });
}

और हम लिख सकते हैं:

app.get('/get-all-tasks',function(req,res){
    res.setHeader('Content-Type', 'application/json');
    Task.getAllTasks(function(docs) {console.log(docs)}); // now this will execute, and when the Task.find().lean().exec(function (err, docs){...} ends it will call the console.log instruction
    res.json({msg:"Hej, this is a test"}); // this will be executed BEFORE getAllTasks() ends ;P (because getAllTasks() is asynchronous and will take time to complete)
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. जावा मोंगोडीबी ड्राइवर का उपयोग करके रेगेक्स और जटिल मानदंडों के साथ कोड संग्रह कैसे ढूंढें?

  2. नेवला सत्यापन:आवश्यक:गलत, मान्य:रेगेक्स, खाली मूल्यों के साथ मुद्दे

  3. डॉकर कंपोज़ में एक बार कमांड कैसे चलाएं

  4. मोंगोडीबी जावा ड्राइवर मैप्रिडस कमांड स्कोप के तहत; कार्यक्षेत्र में कार्य जोड़ें

  5. MongoDB में स्तंभों को पिवट करें