sql >> Database >  >> NoSQL >> MongoDB

Ophalen uit meerdere, afzonderlijke collecties met Express en MongoDB

Gebruik de async bibliotheek die het meest geschikt is voor dit scenario. Waar u meerdere taken moet uitvoeren die niet van elkaar afhankelijk zijn en wanneer ze allemaal iets anders moeten doen, moet u async.parallel() methode. De handtekening is async.parallel(tasks, callback) , waar taken een reeks functies is.

Het zal onmiddellijk alle functies parallel uitvoeren, wachten tot ze allemaal hun taak terugbellen, en uiteindelijk wanneer alle taken zijn voltooid, zal het terugbellen uitvoeren (de laatste terugroepactie).

Het volgende voorbeeld laat zien hoe dit kan worden aangepast aan uw gebruikssituatie:

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. Spring-boot:mongoDB-datumvergelijking werkt niet

  2. OData - Vreemde index met MongoDB [Mongoose:Cast-fout]

  3. Werken met PTVS, IronPython en MongoDB

  4. MongoError:filterparameter moet een object zijn