sql >> Databáze >  >> NoSQL >> MongoDB

Zpětné volání Node.js s aktualizací MongoDB se nikdy nevrátí, ačkoli aktualizuje DB

Myslím, že nerozumíte tomu, jak async.series funguje.

Vaše funkce v async.series nepřijímejte callback jako argument a oni tomu neříkají. A ten request(...) věc pravděpodobně vůbec není funkcí. To je pravděpodobně důvod, proč přeruší asynchronní smyčku. Zkuste toto:

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

Všimněte si, že jsem přidal callback argument při volání start . Budete tedy muset svůj kód pracně přefaktorovat, aby každá funkce akceptovala callback který lze vyvolat na konci, když víte, že všechny úkoly jsou hotové. Můžete například přidat async.parallel uvnitř start a tato funkce může vypadat takto:

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. chyba mongoDB:Chyba:nepodařilo se připojit k [localhost:27017]

  2. Jak získám barevný výstup dotazu a shell v MongoDB?

  3. MongoDB geo vzdálenost/poloměr k užitečným jednotkám

  4. Sloučit kolekci Mongodb a Python Dict