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

Načítání z více samostatných sbírek pomocí Express a MongoDB

Použijte async knihovna, která je pro tento scénář nejvhodnější. Tam, kde potřebujete spustit více úloh, které na sobě nezávisí, a když všechny skončí, udělejte něco jiného, ​​měli byste použít async.parallel() metoda. Podpis je async.parallel(tasks, callback) , kde úkoly jsou pole funkcí.

Okamžitě spustí všechny funkce paralelně, počká, až všechny zavolají zpětné volání úlohy, a nakonec po dokončení všech úloh spustí zpětné volání (konečné zpětné volání).

Následující příklad ukazuje, jak by to mohlo být přizpůsobeno pro váš případ použití:

router.get('/profile', function(req, res, next) {
    mongo.connect(url, function(err, db) {
        var locals = {};
        var tasks = [
            // Load users
            function(callback) {
                db.collection('users').find({}).toArray(function(err, users) {
                    if (err) return callback(err);
                    locals.users = users;
                    callback();
                });
            },
            // Load colors
            function(callback) {
                db.collection('colors').find({}).toArray(function(err, colors) {
                    if (err) return callback(err);
                    locals.colors = colors;
                    callback();
                });
            }
        ];

        async.parallel(tasks, function(err) { //This function gets called after the two tasks have called their "task callbacks"
            if (err) return next(err); //If an error occurred, let express handle it by calling the `next` function
            // Here `locals` will be an object with `users` and `colors` keys
            // Example: `locals = {users: [...], colors: [...]}`
            db.close();
            res.render('profile/index', locals);
        });
    });
});


  1. Automatické zvýšení sekvence v mongodb pomocí Java

  2. Proč se při aktualizaci MongoDb zobrazuje chyba?

  3. 5 způsobů, jak získat minuty z rande v MongoDB

  4. Jak zpracovat požadavky na vložení do Spring Data před jejich přidáním do MongoDB?