sql >> Databasteknik >  >> NoSQL >> MongoDB

Node.js-återuppringning med MongoDB-uppdatering återkommer aldrig även om den uppdaterar DB

Jag tror att du missförstår hur async.series fungerar.

Dina funktioner i async.series ta inte callback som ett argument och de kallar det inte. Och den där request(...) grejer är förmodligen inte en funktion alls. Det är förmodligen därför den bryter asynkronslingan. Prova detta:

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();
    }
);

Observera att jag har lagt till callback argument när du anropar start . Därför måste du omstrukturera din kod noggrant så att varje funktion accepterar callback som kan ringas i slutet när man vet att alla jobb är gjorda. Till exempel kan du lägga till async.parallel inuti start och den här funktionen kan se ut så här:

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. Hur får man data från array i mongoose?

  2. Varför slutar jag med java.lang.IllegalArgumentException för Casbah / Java MongoDB Driver?

  3. Undantag:kan inte konvertera från BSON typ EOO till Date

  4. MongoDB $weeklyUpdate #65 (15 april 2022):GDELT, Mongoose &Hackathon Time!