sql >> Database >  >> NoSQL >> MongoDB

Node.js callback met MongoDB-update keert nooit terug, hoewel DB wordt bijgewerkt

Ik denk dat je verkeerd begrijpt hoe async.series werkt.

Uw functies in async.series neem geen callback aan als een argument en ze noemen het niet. En dat request(...) spul is waarschijnlijk helemaal geen functie. Dat is waarschijnlijk de reden waarom het de asynchrone lus verbreekt. Probeer dit:

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

Merk op dat ik callback heb toegevoegd argument bij het aanroepen van start . U zult uw code dus grondig moeten herstructureren, zodat elke functie callback accepteert die aan het einde kan worden opgeroepen als u weet dat alle taken zijn voltooid. U kunt bijvoorbeeld async.parallel . toevoegen binnen start en deze functie kan er als volgt uitzien:

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. Kan ik een database met ruby-klassen maken?

  2. MongoDB:Sorteer op bestaand veld en vervolgens alfabetisch

  3. Hoe kan ik mijn express-app zo structureren dat ik maar één keer een mongodb-verbinding hoef te openen?

  4. Hoe voer ik het SQL Join-equivalent uit in MongoDB?