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

MongoDB अपडेट के साथ Node.js कॉलबैक कभी वापस नहीं आता है, हालांकि यह DB को अपडेट करता है

मुझे लगता है कि आप गलत समझते हैं कि कैसे async.series काम करता है।

async.series . में आपके कार्य callback न लें एक तर्क के रूप में और वे इसे नहीं कहते हैं। और वह request(...) सामान शायद एक समारोह नहीं है। शायद इसीलिए यह async लूप को तोड़ता है। इसे आजमाएं:

async.series(
    [
        function(callback) { // <--- missing callback
            log('starting');
            db.connect('mongodb://127.0.0.1:27017/test',
                function(err, base){
                    if(err) throw err;
                    db = base;
                    callback(); // <--- missing callback
                });
        },
        function(callback) { // <--- missing function with callback
            request(website, function(err,resp,body) {
                start(err, resp, body, callback);
            })
        }
    ],
    function(){
        log('closing DB');
        db.close();
    }
);

ध्यान दें कि मैंने callback जोड़ा है कॉल करते समय तर्क start . इस प्रकार आपको अपने कोड को तेजी से रिफलेक्टर करना होगा ताकि प्रत्येक फ़ंक्शन callback को स्वीकार कर सके जिसे अंत में बुलाया जा सकता है जब आप जानते हैं कि सभी कार्य हो चुके हैं। उदाहरण के लिए आप async.parallel . जोड़ सकते हैं अंदर start और यह फ़ंक्शन इस तरह दिख सकता है:

function start(err, resp, body, callback) {
    // some stuff happens here
    var jobs = []
    pageURLS.forEach(function(url, index, array){
        jobs.push(function(clb) {
            request(url, function(error,response,bodies) {
                // some stuff
                clb(); // <--- this refers to the local callback for the job
            });
        });
    });
    async.parallel(jobs, function() {
        // all jobs are done, let's finilize everything
        callback();
    });
};



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी $दौर

  2. नेवला में डाले गए नवीनतम उप-दस्तावेज़ की आईडी खोजें

  3. नेवला चुनिंदा फ़ील्ड (नेस्टेड)

  4. Ubuntu 15.10 में प्रोग्राम के रूप में tar.gz फ़ाइल से रोबोमोंगो को कैसे स्थापित करें?

  5. साझा समूहों के लिए MongoDB बैकअप प्रबंधन युक्तियाँ