sql >> Databasteknik >  >> NoSQL >> MongoDB

Hämta från flera separata samlingar med Express och MongoDB

Använd async bibliotek som är bäst lämpat för detta scenario. Om du behöver köra flera uppgifter som inte är beroende av varandra och när de alla är klara med att göra något annat, bör du använda async.parallel() metod. Signaturen är async.parallel(tasks, callback) , där uppgifter är en rad funktioner.

Det kommer omedelbart att köra alla funktioner parallellt, vänta på att alla ska ringa tillbaka sin uppgift, och slutligen när alla uppgifter är klara kommer den att köra återuppringning (den sista återuppringningen).

Följande exempel visar hur detta kan anpassas för ditt användningsfall:

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. bästa praxis för kapslade kategorier i Mongo och Meteor

  2. Hur tar jag bort dokument med Node.js Mongoose?

  3. Hur använder man en variabel som ett fältnamn i mongodb-native findAndModify?

  4. Sortera mongodb efter reddit rankingalgoritm