我的目标是 1.提取唯一数据 2.计算每个数据
async.waterfall([function(callback){
var q = mongoose.model('student').distinct('hobby');
q.exec(function(err,rst){
callback(null,rst);
});
},
function(arg1,callback){
var temp = new Array();
async.map(arg1,function(val,callback1){
var qq = mongoose.model('student').where('hobby').equals(val).count();
qq.exec(function(err,rst){
temp.push(rst);
});
callback1();
},function(e,r){});
callback(null,temp);
}], function(err,result){console.log("result:"+result);});
计算每个数据时出现问题..
它与原始数组的顺序不同。
答案 0 :(得分:0)
代码中有几个问题。回调不在正确的位置。此外,应使用async.mapSeries()而不是async.map()来保持数组的原始顺序。以下是修订后的代码:
async.waterfall([
function(callback){
var q = mongoose.model('student').distinct('hobby');
q.exec(function(err,rst){
callback(null,rst);
});
},
function(arg1,callback){
var temp = new Array();
async.mapSeries(arg1,function(val,callback1){
var qq = mongoose.model('student').where('hobby').equals(val).count();
qq.exec(function(err,rst){
temp.push(rst);
callback1(); // call here instead of outside
});
},function(e,r){
callback(null,temp); // call here instead of outside
});
}
], function(err,result){
console.log("result:"+result);
});