gpt4 book ai didi

javascript - 对多个 MongoDB 聚合函数使用 Async Parallel

转载 作者:行者123 更新时间:2023-11-30 20:43:17 24 4
gpt4 key购买 nike

您好,我需要执行多个聚合查询,并将结果呈现给 View 。我现在的问题是弄清楚如何确保所有查询在呈现之前完成,我遇到了 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 });
});

所以我有两个聚合函数,每个函数都会产生它们的结果。这两个函数正在正确打印它们的结果,但没有数据呈现到我的 View (随机)。

最佳答案

任务将回调函数作为参数
所以任务的返回数据应该是这样的

task: function(callback) {
...
callback(null, result);
}

在这种情况下,您可以使用 callback 作为 Country.aggregate 的第二个参数

关于javascript - 对多个 MongoDB 聚合函数使用 Async Parallel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49021221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com