sql >> Database teknologi >  >> NoSQL >> MongoDB

Node.js tilbagekald med MongoDB-opdatering vender aldrig tilbage, selvom den opdaterer DB

Jeg tror, ​​at du misforstår hvordan async.series virker.

Dine funktioner i async.series tag ikke callback som et argument, og de kalder det ikke. Og den request(...) ting er sandsynligvis ikke en funktion overhovedet. Det er sandsynligvis derfor, den bryder asynkron loop. Prøv dette:

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

Bemærk, at jeg har tilføjet callback argument, når du kalder start . Du bliver derfor nødt til at omstrukturere din kode grundigt, så hver funktion accepterer callback som kan kaldes til sidst, når du ved, at alle opgaver er udført. For eksempel kan du tilføje async.parallel inde i start og denne funktion kan se sådan ud:

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. er FindIterable<Document> indlæse alle dokumenter?

  2. Installation af MongoDB i WSL

  3. MongoDB + C# driver + forespørgselsarray af elementer, hvor hvert arrayelement indeholder underdokument til forespørgsel på

  4. Brug createView med allowDiskUse