sql >> データベース >  >> NoSQL >> MongoDB

ExpressとMongoDBを使用して、複数の個別のコレクションからフェッチします

    asyncを使用します このシナリオに最適なライブラリ。相互に依存しない複数のタスクを実行する必要があり、それらがすべて他のことを実行したときに、 async.parallel() 方法。署名はasync.parallel(tasks, callback)です 、ここで、tasksは関数の配列です。

    すぐにすべての関数を並行して実行し、すべての関数がタスクコールバックを呼び出すのを待ち、最後にすべてのタスクが完了すると、コールバック(最後のコールバック)を実行します。

    次の例は、これをユースケースにどのように適合させることができるかを示しています。

    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. エラー:ホスト識別子のダブルコロン

    2. Redisを使用したマルチパラメーターマッチファインダー

    3. フォローとフィードのmongodbデザイン、どこに埋め込む必要がありますか?

    4. Mongodbの埋め込み構造の更新と検索?