使用Async.each拒绝调用最终回调



在下面的代码中,我希望在完成对所有元素的迭代后执行函数finalCallBack

var rows = [
  { name: 'first'},
  { name: 'second'}
];
var execForEachRow = function(row, callback){
  var studentModel = new StudentModel(row);
  studentModel.save(function(err,result){
    if (err) { throw err;}
    rowsSavedCount++;
  });
}
var finalCallBack = function(err){
  if (err) { msg = err;} else { msg = rowsSavedCount;}
  res.send({"result" : msg});
}
async.each(rows, execForEachRow, finalCallBack);

当我执行上面的代码时,它非常成功地将数据插入到mongo集合中。但是,不会调用finalCallBack。

有没有线索表明我在这里可能遗漏了什么?

您错过了在studentModel.save的回调中调用回调:

studentModel.save(function(err,result){
    if (err)        
       return callback(err);
    rowsSavedCount++;
    callback(null);
});

此外,抛出Exception不是一个好主意,它会破坏整个Express服务器。

最新更新