mongoose:如何处理find()。cursor()。on('data')中的错误?

时间:2017-06-05 22:26:24

标签: node.js mongodb mongoose

我需要处理我的整个集合,根据某个集合字段,根据算法为每个文档更新一个字段('isActive')。

我写过这个方法:

function updateCollectionActiveStatus(callback) {
  Person.find({}).cursor()
    .on('data', function(doc.insertionDate) { // handle data
      doc.isActive = check(doc); // external logic, irrelevant here
      doc.save(function(err) {
        if (err) {
          callback(err);
          // HOW TO STOP EXECUTION HERE, AND AVOID PROCESSING MORE DATA?
        })
    })
    .on('error', function(err) { // handle error
      callback(err);
    })
    .on('end', function() { // final callback
      callback();
    })
  ;
}

我问:如何摆脱光标数据处理,我应该收到错误吗? 当然callback(err)之后的回报应该是无效的......

注意:回答@Neil Lunn的评论,我不打算'回滚',而只是避免在出错后处理更多数据......希望这是足够'具体'...... < / p>

注意2 :如果有人知道使用mongoose在集合的每个文档上更新/更光滑/更聪明/更原子的方式来更新一个字段(取决于该文档的其他字段),请让我知道,它应该被接受为正确的答案......

0 个答案:

没有答案