Использование Async Parallel для нескольких агрегатных функций MongoDB

Jose Varela спросил: 03 февраля 2018 в 01:12 в: javascript

Здравствуйте, мне нужно выполнить несколько запросов агрегирования и отобразить результаты в представлении. Моя проблема прямо сейчас заключается в том, как убедиться, что все запросы завершены до их рендеринга, и я столкнулся с async.parallel. Я пытался с этим покончить, но он не работает. Например, это то, что у меня есть сейчас.

    var async = require('async');
    async.parallel({
    one: function(){
        Country.aggregate([
            {
                $match: {
                name: { $in: ["USA", "China", "India", "France", "Japan"]},
                }
            },
            {
                $sort: {
                    year: 1
                }
            },
            {
                $group: {
                    _id: '$name',
                    nominalGDP: {$push: "$nominalGDP"}
                }
            }, 
            {
                $project: {
                _id: 0,
                name: "$_id",
                nominalGDP: 1
                }
            }
            ], function(err, recs){
            if(err){
                console.log(err);
            } else {
                console.log(recs);
            }
        });
    },    two: function(){
        Country.aggregate([
            {           
                $match: {
                    $and: [
                        {name: { $in: ["USA", "China", "India", "France", "Japan"]}},
                        {year: 2017}
                    ]
                }
            },
            {
                $sort: {
                    "nominalGDP": -1
                }
            },
            {
                $project: {
                _id: 0,
                name: 1,
                'y' : '$nominalGDP'
                }
            }       
            ], function(err, recs){
            if(err){
                console.log(err);
            } else {
                console.log(recs);
            }
        });
    }
}, function(err, results){
    res.render('random', { title: 'Test', data: results.one, pie: results.two });
});

Итак, у меня есть две совокупные функции, каждая из которых дает свои результаты. Эти две функции правильно печатают результаты, но данные не отображаются в моем представлении (случайные).

0 ответов