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

时间:2014-09-17 14:14:42

标签: javascript node.js express

在下面的代码中,我希望在迭代完所有元素后执行函数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不会被调用。

我在这里可能缺少什么线索?

1 个答案:

答案 0 :(得分:0)

你错过了在studentModel.save的回调中呼叫回调:

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

另外 - 抛出异常并不是一个好主意 - 它会打破整个Express服务器。